Seite 1 von 1

Unverständlich:Die Main-Funktion

Verfasst: Samstag 27. Juli 2019, 20:57
von JEC
Hallöchen,
ich habe heute mich mit Funktionen beschäftigt und stieß dabei auf die sog. Main-Funktion. So bekam ich zwei Stücke Code an die Hand die ich irgendwie
nicht nachvollziehen kann:

Code: Alles auswählen

if __name__ == "__main__":
    foo()
und

Code: Alles auswählen

def main(argv):
    blablabla
if __name__ == "__main__":
    main(sys.argv[1:])
Ist jemand evtl. in der Laage mir das Plausibel zu erklären?

Liebe Grüße und
danke im voraus

JCE

Re: Unverständlich:Die Main-Funktion

Verfasst: Samstag 27. Juli 2019, 21:22
von snafu
__name__ ist der Name des Moduls, wenn es importiert wurde. Wenn es hingegen als Skript von der Kommandozeile aufgerufen wird, dann ist der Name einfach "__main__", d.h. der Vergleich ist in diesem Fall wahr. Und dann ruft man in den meisten Fällen so wie bei deinen Beispielen die main()-Funktion auf.

Und die Bemerkung, dass es dazu mindestens 56452457465 Google-Treffer gibt, spar ich mir mal...

Re: Unverständlich:Die Main-Funktion

Verfasst: Samstag 27. Juli 2019, 21:24
von sparrow
Was genau ist denn deine Frage?

Aus verschiedenen Gründen (und icht nur weil es guter Stil ist) sollten in Python nur die Definitionen von Klassen, Funkltionen und Konstanten auf Modulebene stehen. Per Kovention startet das Programm mit einer Funktion "main".

Wenn das aktuelle Modul das erste Modul ist, das von dem Interpreter gestartet wurde, ist der Wert von __name__ "__main__". Das macht man sich mit dem von dir gezeigten Pattern zunutze um dann, und nur dann, die Startfunktion main aufzurufen.

Re: Unverständlich:Die Main-Funktion

Verfasst: Samstag 27. Juli 2019, 21:54
von JEC
@snafu
@sparrow
Ich danke euch beiden für die schnellen und verständlichen Antworten. Ich verstehe jetzt die Funktion und Funktionsweise dieser Code-Zeilen.

LG
JEC