Exécution du code Python avec l'option -m et sans
L'interpréteur Python propose l'option -m, qui permet d'exécuter un module de bibliothèque sous forme de script. Cependant, cela soulève des questions sur les différences entre utiliser et ne pas utiliser l'option -m.
Différences dans l'appel du code Python
Lorsque vous invoquez un code Python, tel que a.py, sans l'option -m, le fichier est traité comme un script. D'autre part, en utilisant l'option -m, l'interpréteur importe le module spécifié sous forme de script avant d'exécuter le script principal.
Cette distinction est cruciale lorsqu'il s'agit de packages. L'exécution d'un package avec python foo/bar/baz.py sera différente de l'utilisation de python -m foo.bar.baz. Dans ce dernier cas, le package foo.bar est importé, permettant des importations relatives.
package et name
L'attribut __package__ fournit le nom du package contenant le module. Lors de l'appel direct d'un script, __package__ est défini sur Aucun, car le fichier ne fait pas partie d'un package. Cependant, lorsque vous utilisez l'option -m pour un module dans un package, __package__ est défini sur le nom du package (par exemple, 'foo.bar').
L'attribut __name__ fait référence au nom du module actuel. Il est défini sur '__main__' lors de l'exécution d'un script et reste le même même lors de l'appel d'un module avec l'option -m.
Explication de David Beazley
David Beazley décrit comment l'option -m exécute un module de bibliothèque en tant que script dans le module __main__ avant d'exécuter le script principal. Cela signifie que l'espace de noms global du script est placé dans le module __main__ et que l'attribut __name__ fait référence à ce module.
Différences pratiques
L'utilisation de l'option -m peut fournir les avantages suivants :
Cependant, l'utilisation de l'option -m peut également présenter certaines limitations :
Dans l'ensemble, choisir entre utiliser ou non le - L'option m dépend des exigences spécifiques du code Python que vous exécutez et si vous devez importer des modules, activer les importations relatives ou exécuter des packages en tant que scripts.
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!