Python: Datei mit "globalem Code"
-
Hallo,
ich habe 2 Python Dateien: Eine Create.py und eine View.py.
In der View.py ist eine Funktion sowie "globaler Code" (keine Ahnung wie man das nennt), sprich Code der in keiner Funktion steht und ausgefuehrt wird wenn man das Script View.py startet. Also in etwa sowas:
#View.py def viewFile(myFile): ... if( len(sys.argv) < 2 ): logFatal("View", "File argument missing.") sys.exit(1) viewFile(argv[1])
View.py soll also die Funktion viewFile besitzen (die vom Modul Create aufgerufen wird) als auch ein ausfuehrbares Script sein.
In meiner 2. Datei Create.py mache ich nun import View und rufe dann View.viewFile(file) auf.
Das Problem ist: Wenn ich nun Create.py ohne Argumente starte (Create.py braucht keine Argumente), kriege ich sofort die Fehlermeldung aus View.py:"File argument missing."
Wie kann ich das machen, dass View.py ausfuehrbar ist aber auch eine Funktion anbietet und dass der globale Code von View NICHT ausgefuehrt wird, wenn ich View in Create importiere?
-
So macht man das üblicherweise:
if __name__ == "__main__": # hier: code der nur ausgeführt wird, wenn die Datei direkt ausgeführt wird, # nicht aber wenn sie nur von anderen importiert wird
-
Perfekt. Danke!
Dh. wenn ich ein Modul A.py importiere, wird automatisch der "globale Code" in A.py ausgefuhert?
-
Das Modul wird ausgeführt. Die ganzen
def
s sind auch nur Code, dessen Ausführung dazu führt, das in irgendwelchen Symboltabellen / Dictionaries Funktionsobjekte abgelegt werden.
-
Bashar schrieb:
Das Modul wird ausgeführt. Die ganzen
def
s sind auch nur Code, dessen Ausführung dazu führt, das in irgendwelchen Symboltabellen / Dictionaries Funktionsobjekte abgelegt werden.Aber wenn ein Modul geladen wird, werden doch nicht automatisch die ganzen Funktionen ausgefuhert?
-
Nicht ausgefuehrt, aber definiert. Definiert, weil die
def
s auch nur Code sind, der eben "in irgendwelchen Symboltabellen / Dictionaries Funktionsobjekte [ablegt]".
-
Dieser Thread wurde von Moderator/in Marc++us aus dem Forum Rund um die Programmierung in das Forum Dynamische Programmiersprachen (Python, Ruby, Perl & Co) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.