Maison > développement back-end > Tutoriel Python > Comment le module de contrôle `__all__` de Python importe-t-il avec `from import *` ?

Comment le module de contrôle `__all__` de Python importe-t-il avec `from import *` ?

Patricia Arquette
Libérer: 2024-12-12 18:00:25
original
841 Les gens l'ont consulté

How Does Python's `__all__` Control Module Imports with `from  import *`?

Dévoilement du rôle de "__all__" en Python

La liste "__all__" dans un fichier "__init__.py" joue un rôle essentiel pour contrôler quels symboles sont exportés lorsque "from import *" est utilisé dessus module.

Plus précisément, "__all__" définit une liste de chaînes qui représentent les symboles du module qui seront accessibles lorsque la syntaxe générique "import *" est utilisée. Par exemple, considérons le code suivant dans un module nommé "foo.py" :

__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz(): return 'baz'
Copier après la connexion

Dans cet exemple, les symboles "bar" et "baz" sont explicitement exportés en utilisant "__all__". De ce fait, lorsque vous importerez le module "foo" avec "from foo import *", seuls ces deux symboles seront disponibles. Tous les autres symboles, tels que « waz », seront masqués.

from foo import *

print(bar)
print(baz())

# Attempting to access "waz" will raise an exception.
print(waz)
Copier après la connexion

Si la liste « __all__ » est commentée, le comportement d'importation par défaut prend effet, où tous les symboles qui ne commencent pas par un trait de soulignement sont importés. Dans ce cas, l'instruction d'importation réussirait et "waz" serait également accessible.

# Comment out __all__

from foo import *

print(bar)
print(baz())
print(waz)
Copier après la connexion

Il est important de noter que "__all__" n'affecte que la syntaxe "from import *". Les membres qui ne sont pas mentionnés dans "__all__" sont toujours accessibles depuis l'extérieur du module en utilisant des instructions d'importation spécifiques, telles que "from 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!

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