我对 pythonnonlocal
关键字的行为感到困惑。
所以标准的例子就是这个问题:有一个def outerfoo():
包含变量定义的块outvar = 0
,里面outerfoo()
有一个def innerfoo():
包含的块nonlocal outvar
,使得outvar
inouterfoo():
的命名空间的值可以通过里面发生的事情来改变innerfoo()
。
到目前为止,一切都很好。但是,以下代码失败并显示SyntaxError
:
outvar = 0 #not in any function
def foo():
nonlocal outvar
outvar += 1
foo()
解析器正在查找什么名称空间,但没有找到outvar
?