Python: Grundlagen des Syntax?


31.07.2020, 21:45

Geht die Methode print_hi so lange, bis zum Einstiegspunkt oder bis darunter irgendwann der nächste def kommt?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
Fangen wir mal hier an, was ist das für ne Geschichte?
Ist das der Programm Einstiegspunkt?

jup - du kannst das aber auch weglassen. Macht es nur nochmal ersichtlicher, wo genau das Programm startet.

und wieso sind da zwei __?

Das ist Pythons Variante der "protected" Attribute und Funktionen. Es wird von Python, wenn keine Klasse explizit angegeben ist, immer über die momentane Klasse aufgerufen - um Namenskollisionen zu vermeiden

Und oben die Methode, da ist es doch gar nicht klar, wann die aufhört, das verwirrt mich brutal.

Python setzt auf Einrückung statt geschweiften Klammern.

Die Funktion hört also da auf, wo der nächste Block mit der gleichen Einrückung wie der Kopf der Funktion anfängt


Simon221585 
Beitragsersteller
 31.07.2020, 22:11

Mit anderen Worten, weil meine if da unten ganz vorne ist, also kein Leerzeichen vor dem beginnen hat, ist das getrennt von der Methode oben?

Also ich glaube ich weiß so langsam wieder wieso ich die Sprache seltsam finde xD

0
Lamanini  31.07.2020, 22:26
jup - du kannst das aber auch weglassen.

Wobei diese Abfrage dafür sorgt, dass der Code nur ausgeführt wird, wenn auch diese Datei gestartet wurde, und nicht nur wenn sie irgendwo importiert wird. Wenn man es weglässt und sie importiert, wird das auch alles ausgeführt.

2
Simon221585 
Beitragsersteller
 01.08.2020, 10:04
@Lamanini

Gerade herausgefunden, das ist eine interessant Idee mit dem Einrücken, spart Zeit xD

0
__name__ ist eine Systemvariable. Sie speichert den Bezeichner einer Skriptdatei. Die Ausprägung von __name__ kann grundsätzlich 2 Werte annehmen:
”__main__” (wenn  name aus dem Startskript eines Programms aufgerufen wird)
Den Modulnamen (Name der Datei, aus der __name__ aufgerufen wird, wenn diese importiert wird)
Starten wir ein Python Programm indem wir eine py-Datei aufrufen und wird dort __name__ aufgerufen, vergibt das System der Variable den Bezeichner ”__main__”. Importieren wir in diese Datei allerdings in ein anderes Modul, erhält sie einen Bezeichner, der dem Dateinamen entspricht.
Angenommen wir haben die unten aufgeführte Dateistruktur für ein Python-Programm. Es existiert eine run.py Datei, mit der eine Fibonacci-Zahl ausgegeben wird. Das Programm ist dafür designt, aus der Konsole des Betriebssystems aufgerufen zu werden mit ‚python run.py 10‘ (wobei 10 ein beliebiges Userargument ist). Das Modul ressources.py enthält eine entsprechende Funktion fibonacci welche in die run.py importiert wird. Damit wir sehen, welchen Wert __name__ in beiden oben aufgeführten Szenarien annimmt, ist der Befehl print(‚Wert von __name__‘ … ) eingefügt.

https://www.data-science-architect.de/__name____main__/

Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Weil es jetzt explizit noch nicht gelesen habe:

Blöcke beginnen und enden durch Indendation, also Einrückung. Die Funktion print_hi endet also sobald eine Zeile ohne Einrückung folgt.

Der Rest wurde bereits erklärt.


Simon221585 
Beitragsersteller
 31.07.2020, 23:27

Interessant, danke

0
Geht die Methode print_hi so lange, bis zum Einstiegspunkt oder bis darunter irgendwann der nächste def kommt?

 whgoffline hat ja schon alles zu __name__ gesagt. Ansonsten ist Python einrückungssensitiv wenn Du so willst. Die Einrückung entscheidet was zur Methode/Funktion gehört. Die Einrückung entscheidet auch was zum bedingten Block einer IF-Anweisung gehört.

Ich finde das mit der Einrückung für Anfänger nicht ganz so schön, weil man als blutiger Anfänger noch nicht so das Auge für Einrückungen hat. Allerdings hat man das auch nicht wirklich für Klammern.

Auf der anderen Seite finde ich ein schnelles Editieren bei Einrückungen nicht sehr intuitiv. Als Anfänger kopiert man gern mal größere Code-Blöcke, kommentiert Teile aus, oder entfernt Blöcke ganz. Bei Python darf man dann aufpassen, dass man die Einrückung korrigiert. Aber hat alles seine Vor- und Nachteile.

Gruß