0

我对 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

4

0 回答 0