Я пытаюсь использовать глобальную переменную, и как-то я заканчиваю двумя версиями этой переменной. Может ли кто-нибудь увидеть, как это может произойти?Получение нескольких версий глобальной переменной
Мой упрощенный сценарий выглядит следующим образом
a/
init.py
b/
init.py
file1.py
file2.py
Мой первый init.py имеет
from b.file1 import *
from b.file2 import *
В file1.py
У меня есть __all__=[stuff, global_variable]
и следующие
global_variable = None
def doit():
global global_variable
global_variable = 1
print("set global variable to %s" %(global_variable))
Так, наконец, когда я делаю это :
import a
a.doit()
print(a.global_variable)
Я вижу
set global variable to 1
None
'импорт *' делает области видимости локальной версии (то есть копии) модуля-глобальный .. – thebjorn
Все «глобальные» переменные в Python являются глобальными для модуля они импортируются. 'import *' создает глобальную переменную * new * в модуле импорта, которая никак не связана с переменной в модуле, из которого он был импортирован. – BrenBarn
ОК, это решает тайну, кто-нибудь знает, где в документах Python это документировано? –