Heim >Backend-Entwicklung >Python-Tutorial >Was sind die Unterschiede beim Aufruf beim Ausführen von Python-Code mit -m?

Was sind die Unterschiede beim Aufruf beim Ausführen von Python-Code mit -m?

DDD
DDDOriginal
2024-10-22 21:28:30880Durchsuche

What are the Differences in Invocation when Executing Python Code with -m?

Aufrufunterschiede bei der Ausführung von Python-Code mit -m verstehen

Der Python-Interpreter bietet die Option -m, mit der Sie Bibliotheksmodule ausführen können als Skripte innerhalb des __main__-Moduls. Dieser Ansatz unterscheidet sich von der direkten Ausführung von Skripten ohne die Option -m und führt zu bestimmten Unterschieden und Auswirkungen.

Praktische Unterschiede

Bei Verwendung von -m verwaltet Python Pakete anders. Wenn Sie versuchen, ein Paket ohne -m auszuführen, behandelt der Interpreter es als normales Skript. Im Gegensatz dazu können mit -m Pakete importiert werden und relative Importe berücksichtigen das Paket korrekt als Ausgangspunkt.

Betrachten Sie beispielsweise den folgenden Code in a.py:

<code class="py">if __name__ == "__main__":
    print(__package__)
    print(__name__)</code>

Das Ausführen von python a.py führt zu:

None
__main__

Während die Verwendung von python -m a Folgendes ergibt:

""
__main__

Hier ist die Variable __package__ im ersten Fall leer, da die Datei leer ist als Skript ausgeführt. Mit -m wird __package__ auf einen leeren String gesetzt, da das Modul nicht innerhalb eines Pakets liegt.

Erklärung von Paket und Name

Für __package__:

  • Für Skripte, die ohne -m ausgeführt werden, wird __package__ auf „Keine“ gesetzt, da es sich nicht um Pakete handeln kann.
  • Für Module, die mit -m ausgeführt werden und darin enthalten sind Pakete, __package__ wird auf den Namen des Pakets gesetzt.

Für __name__:

  • Es verweist auf das Hauptmodul, das beim Ausführen von Skripten erstellt wird.
  • Bei Paketen, die mit -m ausgeführt werden, bezieht es sich auf den globalen Namespace, der in sys.modules['__main__'] gespeichert ist. Das Hauptmodul in einem Paket wird ausgeführt, wenn das Paket mit -m ausgeführt wird.

Auswirkungen auf die Paketausführung

Ausführen eines Pakets als Skript mit -m erfordert ein __main__.py-Modul innerhalb des Pakets. Dieses Modul fungiert als Einstiegspunkt, wenn Python das Paket mit dem Schalter -m ausführt.

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede beim Aufruf beim Ausführen von Python-Code mit -m?. 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