这是我的简单脚本,名为 aScript.py:
a = 0
def load():
global a
a = 1
def plot():
print a
然后在python解释器中执行以下4条命令:
>>>from aScript import *
>>>print a
>>>load()
>>>print a
为什么打印:
0
0
而不是(顺便说一句,这是我所期望的):
0
1
我使用的是 python 2.6。
谢谢!
...为什么打印0 0?
最佳答案
global
变量仅在其自己的模块中是全局的,因此 load()
仅修改 a
里面的变量 aScript
,不是导入的a
.
当你这样做时from aScript import *
, python 迭代aScript
的公共(public)变量并在当前模块中创建每个变量的副本,即创建 __main__.a
等于 aScript.a
。现在您调用load
,实际上是 aScript.load
它修改了它自己的 a
( aScript.a
),但因为它不知道 __main__.a
,后者保持不变。
关于Python 解释器中的全局/局部作用域?这是什么妖术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134819/