立即封闭顶级函数的命名空间(用于解析非局部函数)?

时间:2013-03-23 17:34:23

标签: python python-3.x

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

0 个答案:

没有答案