我正在尝试更好地理解Python中的作用域。我有以下玩具示例:
a = 1
print "in global: " + str(a)
def g():
a += 1
print "in g(): " + str(a)
def f():
a += 1
print "in f(): " + str(a)
g()
f()
我期望这段代码能够运行并打印出 1
,然后是 2
,最后再次是 2
。但是,实际上我遇到了一个错误:
UnboundLocalError: local variable 'a' referenced before assignment
我原本认为
g()
和 f()
都会从全局作用域中提取 a
。这是不正确的吗?更新: 感谢您的回答,但仍有不清楚的地方:如果我想读取全局变量
a
并将其分配给我创建的一个名为 a
的局部变量,这是否可行?我这么做的原因是我试图弄清楚当调用
g()
时它是否继承了 f()
的作用域或定义它的全局作用域?
global
。 - gil