Импорт глобального пространства имен в Python - PullRequest
4 голосов
/ 20 июня 2011

допустим, у меня есть следующие файлы:

a.py

glo_var = 0
def func():
    global glo_var
    glo_var = 5
    print "A %d" % (glo_var)

b.py

from a import *
func()
print "B %d" % (glo_var)

Если я запустил b.py, вывод:

A 5
B 0

У меня вопрос, как импортировать глобальное пространство имен, чтобы вывод был

A 5
B 5

Мне нужно вызвать функцию в модуле a.py из b.pyтак что это повлияет на глобальные переменные.

Я не хочу использовать обычный «импорт», но использовать его таким образом, «из импорта *»

1 Ответ

4 голосов
/ 20 июня 2011

Использование from ... import ... копирует ссылки из другого модуля. Повторное связывание значения в оригинале приводит к тому, что оно получает новую ссылку, разрывая связь между a.glo_var и b.glo_var навсегда. Либо используйте изменяемый объект и изменяйте его, либо повторно импортируйте a.glo_var всякий раз, когда вам нужно обновленное значение.

...