Welche Rolle spielt der -m-Schalter?
Einführung
Der -m Die Option erweitert die Fähigkeiten von Python und ermöglicht Vielseitigkeit bei der Modulausführung und -entwicklung. Es erfüllt drei Hauptaufgaben:
1. Modulausführung nach Modulname
python -m
2. Verbesserte Modulpfadauflösung
Bei Verwendung von -m wird das aktuelle Arbeitsverzeichnis zu sys.path hinzugefügt. Dadurch können Module aus dem aktuellen Verzeichnis importiert werden, sodass lokale Pakete ausgeführt werden können, ohne dass eine Installation erforderlich ist.
3. Unterstützung für relative und absolute Importe
-m verarbeitet sowohl absolute als auch relative Importe beim Ausführen von Modulen. Dadurch können Entwickler Importe auf die gleiche Weise verwenden, unabhängig davon, ob ein Modul über die Befehlszeile oder über eine Importanweisung ausgeführt wird.
Historische Entwicklung
Anfänglich - m unterstützte nur Modulnamen der obersten Ebene. Mit PEP 338 wurde es um Submodule und die Initialisierung übergeordneter Pakete erweitert. Schließlich führte PEP 366 die Unterstützung für explizite relative Importe ein.
Anwendungsfälle
-m zeichnet sich in zwei Szenarien aus:
Einschränkungen
-m hat eine wesentliche Einschränkung: es kann nur Python-Codemodule (*.py) ausführen. C-kompilierte Codemodule werden mit -m nicht erfolgreich ausgeführt.
Vergleiche mit anderen Modulausführungsmethoden
Ausführungsmethode | sys.path-Änderung |
|
Paket Einstellung | initAuswertung | mainAuswertung | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Keine Änderung | Absoluter Modulname | Übergeordnetes Paket | Ja (nur Pakete) | Nein (Pakete nur) | |||||||||||||||||||||||||
Befehlszeile mit Dateiname | Endverzeichnis des Dateinamens | '__main__' | Keine | Nein (alle Module) | Ja (Paketmodule) | ||||||||||||||||||||||||
Befehlszeile mit Modulname (-m) | Aktuell Verzeichnis'__main__' | Übergeordnetes Paket | Ja (nur Pakete) | Ja (Paketmodule) | tr>
Fazit
Der Schalter -m gibt Entwicklern ein vielseitiges Tool für die Modulausführung und -entwicklung an die Hand. Es bietet Flexibilität bei der Modulsuche, unterstützt die dynamische Pfadauflösung und erleichtert die nahtlose Ausführung von komplexem Python-Code.
Das obige ist der detaillierte Inhalt vonWas bewirkt der Schalter „-m' in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!