Maison > développement back-end > Tutoriel Python > Quel est le but du commutateur « -m » de Python ?

Quel est le but du commutateur « -m » de Python ?

Mary-Kate Olsen
Libérer: 2024-11-27 05:23:10
original
863 Les gens l'ont consulté

What is the purpose of Python's `-m` switch?

Dévoilement de l'objectif du commutateur -m de Python

Contexte : organisation des modules Python

Les modules Python, unités fondamentales d'organisation, se présentent sous deux formes : modules de code et modules de package. Les modules de code sont constitués de code Python exécutable, tandis que les modules de package englobent des répertoires contenant d'autres modules.

Python attribue des identifiants uniques aux modules, appelés noms de modules et noms de fichiers. En règle générale, les modules sont identifiés par leur nom de module dans le code Python et par leur nom de fichier sur la ligne de commande. Python traduit de manière transparente les noms de modules en noms de fichiers à l'aide de la variable sys.path.

Dévoilement de -m

Introduit dans Python 2.4.1, le commutateur -m permettait à l'origine l'exécution de modules à partir de la commande ligne en fonction de leurs noms de modules. Cela fournissait une alternative à la spécification des noms de fichiers. Dans son itération initiale, -m ne prenait en charge que les noms de modules de niveau supérieur.

PEP 338 a étendu -m pour gérer des représentations de noms de modules plus complexes, permettant l'exécution de modules imbriqués tels que http.server. De plus, il exigeait l'évaluation de tous les fichiers __init__.py du package parent.

La dernière avancée clé est venue avec PEP 366, accordant -m la capacité de prendre en charge non seulement les importations absolues mais également explicites. Ceci a été réalisé en définissant la variable package sur le module parent du nom de module donné.

Applications pratiques de -m

  • Exécution de modules avec Inconnu Noms de fichiers : Comme de nombreux utilisateurs de Python sont familiers avec les noms de modules mais pas nécessairement avec leurs noms de fichiers, -m devient inestimable pour exécuter des modules à partir de la ligne de commande. Par exemple, l'exécution du module http.server est simplifiée à l'aide de python -m http.server.
  • Exécution des packages locaux sans installation : Par défaut, -m ajoute le répertoire de travail actuel à sys. chemin, permettant l'exécution de packages locaux contenant des importations absolues ou relatives. Ce comportement élimine le besoin d'installer le package à des fins de développement.

Limitations de -m

Malgré ses capacités, -m est limité dans le sens où il ne peut exécuter que des modules écrits en Python. (fichiers .py). Les modules de code compilé C ne sont pas pris en charge.

Analyse comparative

Exécution du module via l'instruction d'importation :

  • Aucune modification de sys.path
  • nom mis à l'absolu modulename
  • package défini sur le package parent immédiat
  • __init__.py évalué pour tous les packages
  • __main__.py évalué pour les modules de code

Exécution du module via la ligne de commande avec le nom de fichier :

  • sys.path modifié pour inclure le répertoire du module
  • nom défini sur '__main__'
  • package défini sur Aucun
  • __init__.py non évalué pour aucun packages
  • __main__.py évalué pour les modules de package et de code

Exécution du module via la ligne de commande avec le nom du module (-m) :

  • sys.path modifié pour inclure le répertoire actuel
  • nom défini sur '__main__'
  • package défini sur le package parent immédiat
  • __init__.py évalué pour tous les packages
  • __main__.py évalué pour le package et le code modules

Conclusion

Le commutateur -m sert d'outil puissant pour exécuter des modules Python à partir de la ligne de commande. Sa capacité à convertir les noms de modules en noms de fichiers, à exécuter des packages locaux et à prendre en charge les importations relatives constitue un moyen pratique et polyvalent de gérer le code Python. Malgré sa limitation à l'exécution de modules basés sur Python, -m reste un atout inestimable pour les développeurs Python.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal