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