У меня есть функция, которую я вызываю из модуля. Внутри функции две переменные, которые я пытаюсь получить, становятся глобальными. Когда я запускаю модуль в IDLE сам по себе, я могу получить доступ к переменным после завершения функции, как и ожидалось. Когда я вызываю функцию в коде, в который я импортировал модуль, я не могу получить доступ к переменным.Доступ к глобальным переменным из функции в импортированном модуле
#module to be imported
def globaltest():
global name
global age
name = str(raw_input("What is your name? "))
age = int(raw_input("What is your age? "))
Выход, когда я запускаю его сам по себе.
>>> globaltest()
What is your name? tom
What is your age? 16
>>> name
'tom'
>>> age
16
И код, в котором его импортировать.
import name_age
name_age.globaltest()
но когда я пытаюсь получить доступ к переменным в коде, где я его импортировал.
What is your name? tom
What is your age? 16
>>> name
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
name
NameError: name 'name' is not defined
>>>
Как я могу сделать переменную глобальной в коде, где я импортирован модуль или получить доступ к «имя» или «возраст» переменные в функции.
импорт звезды примерно как зло, как глобалов. @badathings: _dont_ сделать это. –
@bruno desthuilliers: хорошо, спасибо. –
Из [PEP8] (http://legacy.python.org/dev/peps/pep-0008/#imports) * «Следует избегать импорта подстановочных знаков (от import *), поскольку они не позволяют понять, какие имена присутствуют в пространстве имен, запутывая как читателей, так и множество автоматизированных инструментов ... »* –
SiHa