Я пытаюсь использовать глобальную переменную в модулях, импортируя переменную и изменяя ее локально внутри функции. Код и вывод ниже. Последний вывод не тот, который я ожидал, я думал, что это должно быть 15, поскольку он уже был изменен в глобальной области действия func3. Может кто-нибудь объяснить, почему последний выход все равно 10.Общее поведение ключевого слова Python
Спасибо!
test2.py
myGlobal = 5
def func3():
global myGlobal
myGlobal = 15
print "from 3: ", myGlobal
test1.py
from test2 import myGlobal, func3
def func1():
global myGlobal
myGlobal = 10
def func2():
print "from 2: ", myGlobal
print "init: ", myGlobal
func1()
func2()
func3()
func2()
Выходы:
init: 5
from 2: 10
from 3: 15
from 2: 10
'func3' сам использует' myGlobal' не импортированный 'myGlobal' в' test1.py' – Farhadix
В Python нет истинных глобальных переменных; модуль имеет свое «глобальное» пространство имен. Вы можете явно изменить 'test2.myGlobal', но ключевое слово' global' не позволит вам переписывать имена в другом модуле. – geoffspear
Пожалуйста, не пишите такой код, это не нужно, что делает код сложнее рассуждать, и его сложнее проверить. –