import
führt das Modul immer von oben nach unten aus. einen bestimmten Variablennamen Laden nicht möglich ist, das Modul vollständig ohne Ausführung:
from load import a
die äquivalent ist:
# test.py
import load
a = load.a
Sie können nicht nur Teil eines Moduls zu laden, gibt es viele rationalen für Dieses Verhalten. Zum Beispiel können Sie Ihre load_a
Funktion globale Variablen nach oder vor load_a
Funktion definiert verwenden:
def load_a(arg):
if arg in table:
# do something here...
table = [1,2,3,4]
load_a
kann möglicherweise auch globale Variablen ändern.
Der eingebaute __module__
Name für Funktionsobjekte mit dem Modul verbunden ist, in dem die Funktion tatsächlich definiert ist, auch wenn Sie from ... import ...
Anweisung:
>>> from load import a_load
>>> a_load.__module__
'load'
Jedoch können Sie testen, Fahnen, den Anruf zu load_b
verhindern oder Sie sogar @
Dekorateure benutzen könnte, gibt es viele Abhilfen für diesen Fall natürlich:
if flag_b
b = load_b()
Haben Sie eine leere '__init__.py' Datei in diesem Verzeichnis? – Exprator
Ja, ich möchte nur eine laden, aber nicht b, aber b interpretiert auch und load_b() -Funktion genannt –
Dies ist alles normale Python-Code, der normale Variablen definiert. Was, wenn Sie nur "b" importieren wollten, würden Sie "Import" über die Zeile "a = ..." überspringen? So funktioniert es nicht ... – deceze