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

Bedeutung __main__ ?

Beitragvon HarryH » Mittwoch 16. Juli 2003, 15:43

Hallo

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

Code: Alles auswählen

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

if __name__ == '__main__':

Beitragvon akIra » Mittwoch 16. Juli 2003, 15:50

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
...und ich glaube ich habe eine Zwei gesehen
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Beitragvon joerg » Mittwoch 16. Juli 2003, 16:17

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

re:

Beitragvon HarryH » Dienstag 22. Juli 2003, 08:09

Danke für eure Antworten!

Harry

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], dark_universe