这是我的简单脚本,名为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?
答案 0 :(得分:4)
global
变量仅在其自己的模块中是全局变量,因此load()
仅修改a
内的aScript
变量,而不是导入的a
。
执行from aScript import *
时,python迭代aScript
的公共变量并在当前模块中创建每个变量的副本,即创建__main__.a
等于{{1} }}。现在,您致电aScript.a
,实际上load
修改了自己的aScript.load
(a
),但由于它不知道aScript.a
,后者是完好无损。
答案 1 :(得分:0)
global支持全局变量的可写性。没有它,全局变量可以从函数范围读取,但尝试编写它会创建一个同名的本地变量