Bedeutung __main__ ?

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
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Hallo

Könnte mir bitte jemand erklären welche Bedeutung folgender Code hat.

Code: Alles auswählen

if __name__ == '__main__':
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

Meistens sieht das dann so aus:

Code: Alles auswählen

if __name__ == '__main__':
    FunktionXY()
Also statt z.B.

Code: Alles auswählen

def a():
    print "HAHA"
a()
Kannst du einfach schreiben

Code: Alles auswählen

def a():
    print "HAHA"
if __name__ == '__main__':
    a()
Das ist die praktische Seite, also das was du nicht in Funktionen/Klassen machst, wird ja als __main__ Funktion interpretiert und am Anfang abgearbeitet. Wenn du ein Script standartmäßigst öffnest wird der nicht zugewiesene Code ausgefürt, und das kannst du damit abfangen.

Wie das jetzt theoretisch abläuft, kann ja mal einer von den Profs erklären :wink:

Ciao,
aki
[i]...und ich glaube ich habe eine Zwei gesehen[/i]
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Jedes Modul hat ein Attribut namens __name__. Mach mal:

Code: Alles auswählen

import math
print math.__name__
Im 'Hauptmodul', also dem Namensraum deines Hauptprogramms hat diese Variable den Wert '__main__'.

Alles, was unterhalb der if-Abfrage steht, wirs also nur ausgeführt, wenn Du das pythonskript direkt ausführst, nicht wenn Du es als Modul importierst.

Oft nutzt man das für Testcode eines Moduls oder für Code, der als kurzes Kommandozeilenprogramm oder als zu importierendes Modul funktionieren soll.

Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Danke für eure Antworten!

Harry
Antworten