Ich stieß auf eine Situation, die ich nicht verstehe. Ich habe drei Dateien:Importieren von globalen Variablen in Python auf zwei Arten
one.py (runnable):
import two
import three
three.init()
two.show()
two.py:
import three
def show():
print(three.test)
three.py:
test = 0
def init():
global test
test = 1
Das Ergebnis 1 ist, wie ich erwartet habe. Jetzt ändern wir zwei. Py:
from three import test
def show():
print(test)
Das Ergebnis ist 0. Warum?
wegen dieser 'aus drei Import test' .. Im zweiten two.py importieren Sie nur "test", was in three.py gleich "0" ist. –
Um es kurz zu machen: Im zweiten Fall wird 'test' lokal für' two.py', so dass das erneute Binden von 'three.test' keinen Einfluss auf' two.test' hat (dies sind zwei verschiedene Namen). Für eine detaillierte Erklärung, lesen Sie dies: https://nedbatchelder.com/text/names.html –