Heim >Backend-Entwicklung >Python-Tutorial >Was bewirkt Pythons Anweisung „if __name__ == „__main__':'?

Was bewirkt Pythons Anweisung „if __name__ == „__main__':'?

Barbara Streisand
Barbara StreisandOriginal
2025-01-01 14:53:14854Durchsuche

What does Python's `if __name__ ==

Was passiert, wenn __name__ == "__main__": tut?

Der __name__-Guard ist eine gängige Python-Sprache, die Benutzer schützt verhindern, dass versehentlich ein Skript aufgerufen wird, obwohl dies nicht beabsichtigt war. Das Weglassen dieses Schutzes kann zu unerwartetem Verhalten führen, wenn Sie das Skript in ein anderes Skript importieren oder als Pickle serialisieren.

So funktioniert es

Wenn der Interpreter liest Wenn Sie eine Quelldatei erstellen, führt sie zwei Dinge aus:

  • Setzt spezielle Variablen wie __name__
  • Führt den in der Datei gefundenen Code aus

Wenn Sie Ihr Modul als Hauptprogramm ausführen, wird __name__ auf „__main__“ gesetzt. Andernfalls wird __name__ beim Importieren des Moduls auf den Namen des Moduls gesetzt.

Der __name__-Schutz funktioniert wie folgt:

  • Wenn __name__ == '__main__' (main Programm):

    • Führen Sie den Code innerhalb des Schutzkörpers aus (normalerweise Funktionen).
  • Wenn __name__ != '__main__' (importiertes Modul):

    • Überspringen Sie den Code im Schutzkörper.

Code Beispiel

Untersuchen wir den folgenden Code:

print("before import")
import math

print("before function_a")
def function_a():
    print("Function A")

print("before function_b")
def function_b():
    print("Function B {}".format(math.sqrt(100)))

print("before __name__ guard")
if __name__ == '__main__':
    function_a()
    function_b()
print("after __name__ guard")
  • Importieren: Mathematik wird ohne den Schutz importiert, was nicht ideal ist.
  • Hauptprogramm: Wenn der Code als Hauptprogramm ausgeführt wird, wird er gedruckt „Funktion A“ und „Funktion B 10.0“ innerhalb des __name__-Schutzes.
  • Importiertes Modul: Wenn der Code als reguläres Modul importiert wird, wird der Schutz übersprungen und die Funktionen werden übersprungen nicht ausgeführt werden.

Warum verwenden it?

Mit dieser Redewendung können Sie .py-Dateien schreiben, die sowohl als unabhängige Module als auch als Skripte verwendet werden können, die als Hauptprogramm ausgeführt werden. Einige Beispiele für seine Nützlichkeit:

  • Bibliothek mit Demo-Modus:Eine Bibliothek mit einem Skriptmodus für Unit-Tests oder die Ausführung von Demos.
  • Unit-Tests : Test-Frameworks importieren möglicherweise .py-Dateien als Module, sodass der __name__-Schutz erforderlich ist, um Skripte zu verhindern Ausführung.
  • API-Bereitstellung: Ein Modul, das eine API für fortgeschrittene Benutzer bereitstellt und gleichzeitig als unabhängiges Programm ausgeführt wird.
  • Vielseitiger Code: Es ist elegant um ein Skript durch Importieren seines Moduls auszuführen, und der __name__-Guard erleichtert dies.

Zusammenfassend lässt sich sagen, dass das if __name__ == '__main__' Guard kann weggelassen werden, wird jedoch aus Gründen der Vielseitigkeit, des Fehlerschutzes und zur Verhinderung unerwarteten Verhaltens beim Importieren oder Serialisieren von Code empfohlen.

Das obige ist der detaillierte Inhalt vonWas bewirkt Pythons Anweisung „if __name__ == „__main__':'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn