Was bewirkt dies?
if __name__ == "__main__":
print("Hello world!")
Was bewirkt dies?
if __name__ == "__main__":
print("Hello world!")
Diese Antwort richtet sich an Java-Programmierer, die Python lernen. Jede Java-Datei enthält normalerweise eine öffentliche Klasse. Sie können diese Klasse auf zwei Arten verwenden:
Rufen Sie die Klasse aus anderen Dateien auf. Sie müssen sie nur in das aufrufende Programm importieren.
Führen Sie die Klasse zu Testzwecken eigenständig aus.
Im letzteren Fall sollte die Klasse eine öffentliche statische void main()-Methode enthalten. In Python wird dieser Zweck durch das global definierte Label '__main__'
.
Wenn diese .py-Datei von anderen .py-Dateien importiert wird, wird der Code unter "der if-Anweisung" nicht ausgeführt.
Wenn diese .py von python this_py.py
in der Shell oder durch Doppelklick in Windows. Der Code unter der "if-Anweisung" wird ausgeführt.
Sie wird normalerweise für Tests geschrieben.
Wir sehen, ob __name__ == '__main__':
ziemlich oft.
Sie prüft, ob ein Modul importiert wird oder nicht.
Mit anderen Worten: Der Code innerhalb der if
Block wird nur ausgeführt, wenn der Code direkt ausgeführt wird. Hier directly
bedeutet not imported
.
Schauen wir uns an, was er tut, indem wir einen einfachen Code verwenden, der den Namen des Moduls ausgibt:
# test.py
def test():
print('test module name=%s' %(__name__))
if __name__ == '__main__':
print('call test()')
test()
Wenn wir den Code direkt über python test.py
lautet der Name des Moduls __main__
:
call test()
test module name=__main__
Wenn der Python-Interpreter ein bestimmtes Modul ausführt, wird die __name__
hat die globale Variable den Wert "__main__"
:
def a():
print("a")
def b():
print("b")
if __name__ == "__main__":
print ("you can see me")
a()
else:
print ("You can't see me")
b()
Wenn Sie dieses Skript ausführen, gibt es Folgendes aus Sie können mich sehen .
a
Wenn Sie diese Datei, sagen wir A, in Datei B importieren und die Datei B ausführen, dann if __name__ == "__main__"
in Datei A wird falsch, also wird gedruckt Du kannst mich nicht sehen .
b
Alle Antworten haben die Funktionsweise ziemlich genau erklärt. Ich werde jedoch ein Beispiel für die Verwendung geben, das helfen könnte, das Konzept weiter zu verdeutlichen.
Angenommen, Sie haben zwei Python-Dateien, a.py und b.py. Nun, a.py importiert b.py. Wir führen die Datei a.py aus, wobei der "import b.py"-Code zuerst ausgeführt wird. Bevor der restliche Code von a.py ausgeführt wird, muss der Code in der Datei b.py vollständig ausgeführt werden.
Im Code von b.py gibt es einen Code, der ausschließlich in der Datei b.py enthalten ist, und wir wollen nicht, dass eine andere Datei (außer der Datei b.py), die die Datei b.py importiert hat, ihn ausführt.
Das ist es also, was diese Codezeile überprüft. Wenn es die Hauptdatei (d.h. b.py) ist, die den Code ausführt, was in diesem Fall nicht der Fall ist (a.py ist die Hauptdatei, die ausgeführt wird), dann wird nur der Code ausgeführt.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
34 Stimmen
Nur fürs Protokoll - was ist " Haupt ": docs.python.org/3/reference/ und was ist " Name ": docs.python.org/3/reference/