Python __name__ und __main__

Normalerweise sehen wir oft Python-Code wie diesen:

if __name__ == "__main__":
    main() 

In Python sind__name__und__main__zwei spezielle Variablen, die mit Modul- und Skriptausführung zusammenhängen.

__name__und__main___name__ wird normalerweise verwendet, um die Art und Weise zu steuern, wie Code ausgeführt wird, insbesondere wenn ein Modul sowohl als eigenständiges Skript ausgeführt als auch von anderen Modulen importiert werden kann.

1. Die __name__-Variable

__name__ ist eine integrierte Variable, die den Namen des aktuellen Moduls darstellt.

__name__ Der Wert von __name__ hängt davon ab, wie das Modul verwendet wird:

Wenn das Modul als Hauptprogramm ausgeführt wird:__name__wird der Wert von __name__ auf"__main__" gesetzt。

Wenn das Modul importiert wird:__name__wird der Wert von __name__ auf den Dateinamen des Moduls gesetzt (ohne die.py.py-Erweiterung).

Angenommen, es gibt eine Datei module.py:

print(f"模块的 __name__ 值: {__name__}")
Die Ausgabe lautet:
模块的 __name__ 值: __main__

2. Die Bedeutung von __main__

__main__ist eine spezielle Zeichenkette, die verwendet wird, um anzugeben, dass das aktuelle Modul als Hauptprogramm ausgeführt wird.

__main__wird üblicherweise zusammen mit der Variable __name__ verwendet, um festzustellen, ob ein Modul importiert oder als eigenständiges Skript ausgeführt wird.

3. Häufige Muster für die Verwendung vonif __name__ == "__main__":__name__ == "__main__"

In Python ist es üblich, den folgenden Codeblock am Ende eines Moduls hinzuzufügen:

Beispiele

if __name__ == "__main__":
    # Der Code hier wird nur ausgeführt, wenn das Modul als Hauptprogramm ausgeführt wird
    main()

Dieses Muster ermöglicht es dem Modul, bestimmten Code beim Importieren nicht auszuführen und diesen Code nur auszuführen, wenn es als eigenständiges Skript ausgeführt wird.


Beispiel

Angenommen, wir haben ein Modul namens example.py:

example.py-Dateimodul:

def greet():
    print("Grüße vom Beispielmodul!")

if __name__ == "__main__":
    print("Das Skript wird direkt ausgeführt.")
    greet()
else:
    print("Das Skript wird als Modul importiert.")

example.py direkt ausführen

Wenn Sie example.py direkt ausführen, lautet die Ausgabe:

该脚本正在直接运行。
来自 example 模块的问候!

In diesem Fall ist__name__der Wert von __name__ "__main__", daher wird derif __name__ == "__main__"__name__ == "__main__":-Codeblock ausgeführt.

example.py importieren

Wenn Sie example.py in ein anderes Skript importieren, zum Beispiel:

Beispiel

# another_script.py

import example

example.greet()

Die Ausgabe lautet:

该脚本作为模块被导入。
来自 example 模块的问候!

In diesem Fall ist__name__der Wert von __name__"example" (der Modulname), daher wird derif __name__ == "__main__":Der Codeblock __name__ == "__main__" wird nicht ausgeführt.

Zusammenfassung

  • __name____name__ ist eine eingebaute Variable, die den Namen des aktuellen Moduls darstellt.

  • Wenn das Modul als Hauptprogramm ausgeführt wird,__name__ist der Wert von __name__ "__main__"."__main__"。

  • Wenn das Modul importiert wird,__name__ist der Wert von __name__ der Dateiname des Moduls.

  • Verwendungif __name__ == "__main__":__name__ == "__main__" kann das Modul so steuern, dass bestimmter Code beim Importieren nicht ausgeführt wird, sondern nur, wenn es als eigenständiges Skript ausgeführt wird.

Andere Erweiterungen