我对python nonlocal
关键字的行为感到困惑。
所以标准示例与this question中一样:有def outerfoo():
块包含变量定义outvar = 0
,而outerfoo()
内部有def innerfoo():
包含nonlocal outvar
的块,使得outvar
命名空间中outerfoo():
的值可以通过innerfoo()
内的内容进行更改。
到目前为止一切顺利。但是,以下代码失败并显示SyntaxError
:
outvar = 0 #not in any function
def foo():
nonlocal outvar
outvar += 1
foo()
解析器查找的是什么命名空间,它找不到outvar
?