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.
breathe_easy
User
Beiträge: 58
Registriert: Sonntag 29. Juli 2007, 18:34

der if __name__ trick

Beitragvon breathe_easy » 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:

Beitragvon BlackVivi » Sonntag 20. Juli 2008, 14:03

foo.py:

Code: Alles auswählen

print __name__


bar.py:

Code: Alles auswählen

import foo

[code=][vivi@Alexandria ~]$ python foo.py
__main__
[vivi@Alexandria ~]$ python bar.py
foo[/code]

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

Beitragvon lunar » Sonntag 20. Juli 2008, 15:32

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder