2015-09-06 3 views
0

В Python 2.7, в зависимости от того, как я импортирую модуль, глобальные переменные могут стать недоступными.Python 2.7: глобальный с импортированными модулями

У меня есть файл, который содержит test.py следующее:

x = None 

def f(): 
    global x 
    x = "hello" 
    print x 

я получаю следующее ожидаемое поведение:

>>> import test 
>>> print test.x 
None 
>>> test.f() 
hello 
>>> print test.x 
hello 

Но теперь, если я делать некрасивый «импорта *» вместо этого, Получаю следующее:

>>> from test import * 
>>> print x 
None 
>>> f() 
>>> print x 
None 

Так что переменная x больше не доступна .. Любые подсказки?

спасибо, у

+0

небольшая ошибка: после 'из test import *' вызов 'f()' prints 'hello' –

ответ

0

from test import * будет делать эквивалент x = test.x. Если вы измените test.x позже (что сделает ваш звонок на foo()), он не изменит копию x в вашем локальном пространстве имен.

Смежные вопросы