Was bewirkt dies?
if __name__ == "__main__":
print("Hello world!")
Was bewirkt dies?
if __name__ == "__main__":
print("Hello world!")
Jedes Modul in Python hat ein spezielles Attribut namens __name__
. Der Wert der __name__
Attribut wird gesetzt auf '__main__'
wenn das Modul als Hauptprogramm ausgeführt wird (z. B. bei der Ausführung von python foo.py
).
Andernfalls wird der Wert von __name__
wird auf den Namen des Moduls gesetzt, aus dem es aufgerufen wurde.
Re "...der Name des Moduls, aus dem es aufgerufen wurde" : Nicht das Modul selbst? Das klingt nicht plausibel. Wenn es ist den Fall, können Sie aufwendig in Ihrer Antwort? (Aber ohne "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).
Erstellen Sie eine Datei, a.py :
print(__name__) # It will print out __main__
__name__
ist immer gleich __main__
wenn diese Datei direkt laufen zeigt, dass dies die Hauptdatei ist.
Erstellen Sie eine weitere Datei, b.py in demselben Verzeichnis:
import a # Prints a
Starten Sie es. Es wird gedruckt a d.h. der Name der Datei, die importiert wird .
Also, um zu zeigen zwei verschiedene Verhaltensweisen der gleichen Datei Dies ist ein weit verbreiteter Trick:
# Code to be run when imported into another python file
if __name__ == '__main__':
# Code to be run only when run directly
Sie können sich über die spezielle Variable __name__
mit diesem einfachen Beispiel:
erstellen. datei1.py
if __name__ == "__main__":
print("file1 is being run directly")
else:
print("file1 is being imported")
Erstellen Sie *file2. py
import file1 as f1
print("__name__ from file1: {}".format(f1.__name__))
print("__name__ from file2: {}".format(__name__))
if __name__ == "__main__":
print("file2 is being run directly")
else:
print("file2 is being imported")
Ausführen von file2.py
Ausgabe :
file1 is being imported
__name__ from file1: file1
__name__ from file2: __main__
file2 is being run directly
Wenn eine Python-Datei ausgeführt wird, erzeugt sie viele spezielle Variablen wie __name__
. Die Variable __name__
enthält den Namen der Datei. Und die Antwort auf Ihre Frage lautet
if __name__ == "__main__":
# Do something
Das bedeutet, dass, wenn der Name der auszuführenden Datei als Quelldatei ausgeführt wird und kein Modul dann wird der darin enthaltene Code ausgeführt. Dies kann mit einem einfachen Beispiel bewiesen werden. Erstellen Sie zwei Python-Dateien, foo.py
et second.py
. Dann im foo.py
geben Sie dies ein:
if __name__ == "__main__":
print("file is not imported")
else:
print("file is imported")
Und in der second.py
geben Sie dies ein:
import foo
if foo.__name__ == "__main__":
print("file is not imported")
else:
print("file is imported")
Wenn Sie darüber hinaus Folgendes tun werden print(__name__)
dann wird folgendes gedruckt __main__
. Warum?
Da die Datei als Haupt Quelle und wenn Sie es tun print(foo.__name__)
es wird gedruckt foo weil der Standardwert der __name__
ist der Name der Datei, und mit Standard meine ich, dass Sie ihn auch ändern können. Um dies zu tun, gehen Sie einfach in die foo.py
Datei und tun Sie dies: __name__ = "name"
. Wenn Sie die Datei dann ausführen, zum Beispiel,
__name__ = "Hello, World!"
print(__name__)
dann wird die Ausgabe sein:
Hello, World!
Le site Python-Hauptfunktion ist der Startpunkt eines jeden Programms. Wenn das Programm gestartet wird, führt der Python-Interpreter den Code nacheinander aus. Die Hauptfunktion wird nur ausgeführt, wenn sie als Python-Programm ausgeführt wird...
def main():
print("I am in the function")
print("I am out of the function")
wenn Sie das Skript ausführen, zeigt:
I am out of the function
Und nicht den Code "Ich bin in der Funktion".
Es liegt daran, dass wir die Aufruffunktion "if__name__== " nicht deklariert haben. Haupt ".
Wenn Sie davon Gebrauch machen:
def main():
print("I am in the function")
if __name__ == "__main__":
main()
print("I am out of the function")
Die Ausgabe ist gleich
I am in the function
I am out of the function
In Python bedeutet "if__name__== " Haupt Mit "Python" können Sie die Python-Dateien entweder als wiederverwendbare Module oder als eigenständige Programme ausführen.
Wenn der Python-Interpreter eine Quelldatei liest, führt er den gesamten darin enthaltenen Code aus. Wenn Python die "Quelldatei" als Hauptprogramm ausführt, setzt es die spezielle Variable ( Name ) einen Wert zu haben (" Haupt ").
Wenn Sie die Hauptfunktion ausführen, wird sie die "if"-Anweisung lesen und prüfen, ob Name ist gleich Haupt .
In Python "if__name__== " Haupt Mit "Python" können Sie die Python-Dateien entweder als wiederverwendbare Module oder als eigenständige Programme ausführen.
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/