der if __name__ trick

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
breathe_easy
User
Beiträge: 58
Registriert: Sonntag 29. Juli 2007, 18:34

Sonntag 20. Juli 2008, 13:45

ich habe nun schon mehrfach folgende Funktionsdef. gefunden:

Code: Alles auswählen

if __name__ == "__main__":
was genau hat es damit auf sich?

breathe_easy
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Sonntag 20. Juli 2008, 14:03

foo.py:

Code: Alles auswählen

print __name__
bar.py:

Code: Alles auswählen

import foo

Code: Alles auswählen

[vivi@Alexandria ~]$ python foo.py
__main__
[vivi@Alexandria ~]$ python bar.py
foo
Das heißt... in __name__ steckt der Name des Moduls, außer wenn es das Modul ist, was man aufruft. Die Abfrage fragt also "Haben wir das Modul direkt aufgerufen oder importiert?"... Denn __name__ ist nur __main__ wenn es direkt aufgerufen ist. So können wir innerhalb Funktionen definieren und trotzdem in einem anderen Modul verwenden ohne automatisch irgendwas auszuführen.
lunar

Sonntag 20. Juli 2008, 15:32

[wiki=Import#AusfhrungAlsSkript]Import[/wiki]
Antworten