python作用域并在构建命名空间中运行顺序

时间:2017-02-06 12:24:04

标签: python

为什么这在python中不起作用?我可以访问封闭范围(这里是全局范围),当没有其他对同一变量的引用时,但是当它存在时却无法访问。

解释器在变量定义之前是否先查看函数,发现它是假设它只是一个尚未赋值的局部变量?这里翻译的运行顺序是什么?

> a = 5
> a
Out[3]: 
5
> def closure():
    print(a)

> closure()
5
> def closure():
    print(a)
    a = "another"
    return a
> closure()

UnboundLocalError: local variable 'a' referenced before assignment

1 个答案:

答案 0 :(得分:0)

global a添加到函数的第一行。