Heim > Backend-Entwicklung > Python-Tutorial > Wie steuert Pythons „__all__' Modulimporte mit „from import *'?

Wie steuert Pythons „__all__' Modulimporte mit „from import *'?

Patricia Arquette
Freigeben: 2024-12-12 18:00:25
Original
839 Leute haben es durchsucht

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

Enthüllung der Rolle von „__all__“ in Python

Die „__all__“-Liste in einer „__init__.py“-Datei spielt eine entscheidende Rolle bei der Steuerung, welche Symbole exportiert werden, wenn dafür „from import *“ verwendet wird Modul.

Konkret definiert „__all__“ eine Liste von Zeichenfolgen, die die Symbole im Modul darstellen, auf die zugegriffen werden kann, wenn die Platzhaltersyntax „import *“ verwendet wird. Betrachten Sie beispielsweise den folgenden Code in einem Modul namens „foo.py“:

__all__ = ['bar', 'baz']

waz = 5
bar = 10
def baz(): return 'baz'
Nach dem Login kopieren

In diesem Beispiel werden die Symbole „bar“ und „baz“ explizit mit „__all__“ exportiert. Wenn Sie daher das Modul „foo“ mit „from foo import *“ importieren, sind nur diese beiden Symbole verfügbar. Alle anderen Symbole, wie zum Beispiel „waz“, werden ausgeblendet.

from foo import *

print(bar)
print(baz())

# Attempting to access "waz" will raise an exception.
print(waz)
Nach dem Login kopieren

Wenn die Liste „__all__“ auskommentiert ist, wird das Standardimportverhalten wirksam, bei dem alle Symbole, die nicht mit einem Unterstrich beginnen, berücksichtigt werden werden importiert. In diesem Fall wäre die Importanweisung erfolgreich und „waz“ wäre ebenfalls zugänglich.

# Comment out __all__

from foo import *

print(bar)
print(baz())
print(waz)
Nach dem Login kopieren

Es ist wichtig zu beachten, dass „__all__“ nur die Syntax „from import *“ betrifft. Auf Mitglieder, die nicht in „__all__“ erwähnt werden, kann weiterhin von außerhalb des Moduls zugegriffen werden, indem bestimmte Importanweisungen verwendet werden, z. B. „from import “.

Das obige ist der detaillierte Inhalt vonWie steuert Pythons „__all__' Modulimporte mit „from import *'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage