Das Tutorial (Absatz 4, https://docs.python.org/3/tutorial/modules.html#importing-from-a-package) erwähnt:wie import * und __all__ Arbeit mit Submodule Importen
Es enthält auch alle Submodule des Pakets, das explizit geladen von früheren Import-Anweisungen waren. Betrachten Sie diesen Code:
import sound.effects.echo
import sound.effects.surround
from sound.effects import *
In diesem Beispiel ist die Echos-und Surround-Module ist im aktuellen Namensraum importiert, da sie in der sound.effects Paket definiert werden, wenn die von ... Import-Anweisung wird ausgeführt. (Dies funktioniert auch, wenn
__all__
definiert ist.)
Unsicher:
- In der ersten Anweisung, die
previous import statements
ist es unter Bezugnahme auf? - ich die Anweisungen nicht verstehen kann und das Beispiel. Um
from sound.effects import *
sollte nichts importieren, es sei denn in__all__
von__init__.py
im Paket definiert.
„Wenn' ‚__all__‘ 'nicht definiert ist, die Anweisung von' sound.effects importieren * 'importiert nicht alle Submodule aus dem Paket sound.effects in den aktuellen Namensraum, sondern stellt nur sicher, dass das Paket' sound.effects 'wurde importiert (möglicherweise wird irgendein Initialisierungscode in'__init __. py' ausgeführt) und importiert dann die Namen, die im Paket definiert sind." Es heißt es in Ihrem Link – Natecat
@ Natecat können Sie bitte die zweite erwähnte Anweisung erklären. Was bedeutet 'weil sie im sound.effects-Paket definiert sind '? –