我有一个函数,我从模块调用。在函数中,我试图访问的两个变量是全局的。当我单独运行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_这样做。 – 2013-04-10 11:45:43
@bruno desthuilliers:好的,谢谢。 – 2013-04-10 11:46:46
从[PEP8](http://legacy.python.org/dev/peps/pep-0008/#imports)*“应避免使用通配符导入(从导入*),因为它们不清楚哪些名称存在在命名空间中,混淆了读者和许多自动化工具......“* –
SiHa
2014-06-20 07:14:29