Maison > développement back-end > Tutoriel Python > Quelles sont les différences d'invocation lors de l'exécution de code Python avec -m ?

Quelles sont les différences d'invocation lors de l'exécution de code Python avec -m ?

DDD
Libérer: 2024-10-22 21:28:30
original
972 Les gens l'ont consulté

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

Comprendre les différences d'invocation dans l'exécution de code Python avec -m

L'interpréteur Python fournit l'option -m, qui vous permet d'exécuter des modules de bibliothèque en tant que scripts dans le module __main__. Cette approche diffère de l'exécution directe de scripts sans l'option -m, ce qui entraîne certaines distinctions et implications.

Différences pratiques

Lors de l'utilisation de -m, Python gère les packages différemment. Si vous essayez d'exécuter un package sans -m, l'interpréteur le traitera comme un script normal. En revanche, avec -m, les packages peuvent être importés et les importations relatives considéreront correctement le package comme point de départ.

Par exemple, considérons le code suivant dans a.py :

<code class="py">if __name__ == "__main__":
    print(__package__)
    print(__name__)</code>
Copier après la connexion

L'exécution de python a.py donne :

None
__main__
Copier après la connexion

Alors que l'utilisation de python -m a donne :

""
__main__
Copier après la connexion

Ici, la variable __package__ est vide dans le premier cas car le fichier est exécuté comme un script. Avec -m, __package__ est défini sur une chaîne vide puisque le module n'est pas dans un package.

Explication de package et nom

Pour __package__ :

  • Pour les scripts exécutés sans -m, __package__ est défini sur Aucun car ils ne peuvent pas être des packages.
  • Pour les modules exécutés avec -m qui se trouvent dans packages, __package__ est défini sur le nom du package.

Pour __name__ :

  • Il fait référence au module main créé lors de l'exécution de scripts.
  • Pour les packages exécutés avec -m, il fait référence à l'espace de noms global stocké dans sys.modules['__main__']. Le module main d'un package est exécuté lors de l'exécution du package avec -m.

Implications pour l'exécution du package

Exécution d'un package en tant que script avec -m nécessite un module __main__.py dans le package. Ce module sert de point d'entrée lorsque Python exécute le package à l'aide du commutateur -m.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal