Maison  >  Article  >  développement back-end  >  Comment fonctionne réellement « import * » en Python ?

Comment fonctionne réellement « import * » en Python ?

DDD
DDDoriginal
2024-11-16 14:45:03732parcourir

How Does

Démêler l'énigme de "import *"

Qu'est-ce que "import *" importe ?

En Python, "import *" importe tout du module spécifié dans le module actuel. Cela permet un accès direct aux objets importés sans les préfixer avec le nom du module.

Par exemple :

>>> from math import *
>>> pi
3.141592653589793
>>> sin(pi/2)
1.0

Pris dans le Web des collisions de noms

Cependant, importer "tout" avec "*" n'est pas recommandé car cela peut créer des collisions d'espace de noms avec des variables ou des fonctions existantes. De plus, cela peut s'avérer inefficace si un nombre important d'objets est importé.

Importation explicite ou importation avec "*"

Il est préférable d'importer explicitement uniquement les objets objets nécessaires :

>>> from math import pi
>>> pi
3.141592653589793
>>> sin(pi/2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined

Alternativement, le module peut être importé sous son propre espace de noms ou alias :

>>> import math
>>> math.pi
3.141592653589793
>>> import math as m
>>> m.pi
3.141592653589793

Exceptions au "* Import"

Dans certains cas, il peut être opportun de tout importer avec "". Par exemple, certaines bibliothèques fournissent des sous-modules spécialement conçus pour être importés avec "" et contiennent des constantes et des fonctions couramment utilisées.

Plongez dans le mécanisme "* Importer"

Avec "import *", les objets suivants sont importés :

  • Tous les noms répertoriés dans le fichier du module Variable "__all__" (si définie).
  • Tous les noms sauf ceux commençant par un trait de soulignement ("_"), sauf si la variable "__all__" est définie.

Subtilité des sous-modules

Contrairement à la perception commune, "from xyz import " fait pas importer des sous-modules. Les sous-modules doivent être explicitement importés séparément, par ex. "depuis urllib.request import ".

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:
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