我对 python 中变量的命名空间和范围感到困惑
假设我有一个 test.py:
# -*- coding: utf-8 -*-
"""
@author: jason
"""
if __name__ == '__main__':
global strName
print strName
然后,我定义一个名为 strName 的变量并尝试在 test.py 中访问它,但它会引发错误:
In [9]: strName = "Joe"
In [10]: run test.py hello
--------------------------------------------------------------------------- NameError Traceback (most recent call last) C:\Anaconda\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
195 else:
196 filename = fname
--> 197 exec compile(scripttext, filename, 'exec') in glob, loc
198 else:
199 def execfile(fname, *where):
d:\playground\test.py in <module>()
13 print "hello"
14 global strName
---> 15 print strName
16
NameError: global name 'strName' is not defined
In [11]:
我想知道为什么会发生这种情况,有什么方法可以访问 test.py 中的 strName 吗?
global
不是全球性的。global
是模块级的;真正的全局变量,例如min
and int
住在__builtin__
模块 (builtins
在Python 3)。用一个global
模块级别的声明是多余的。
我强烈建议您将数据传递给test.py
另一种方式,例如在其中定义一个函数并将字符串作为参数传递:
test.py:
def print_thing(thing):
print thing
其他想要使用 test.py 的代码:
import test
test.print_thing("Joe")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)