解释器中的Python全局/本地范围?这是什么巫术

时间:2014-04-17 13:43:08

标签: python scope global local

这是我的简单脚本,名为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?

2 个答案:

答案 0 :(得分:4)

global变量仅在其自己的模块中是全局变量,因此load()仅修改a内的aScript变量,而不是导入的a

执行from aScript import *时,python迭代aScript的公共变量并在当前模块中创建每个变量的副本,即创建__main__.a等于{{1} }}。现在,您致电aScript.a,实际上load修改了自己的aScript.loada),但由于它不知道aScript.a,后者是完好无损。

答案 1 :(得分:0)

global支持全局变量的可写性。没有它,全局变量可以从函数范围读取,但尝试编写它会创建一个同名的本地变量