在 exec 中使用非本地
Using nonlocal inside exec
为什么会出现下面的代码:
exec("""
a = 3
def b():
nonlocal a
a = a + 1
b() #error occurs even without this call
print(a)
"""
)
)
报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 4
SyntaxError: no binding for nonlocal 'a' found
这是满足 text/code 比率的更多文本。
nonlocal
语句在封闭的函数命名空间中查找您命名的变量(如果在任何此类命名空间中都没有此类变量,则会引发错误)。如果没有封闭函数,则不需要 nonlocal
。如果您想要顶层的变量,则需要使用 global
语句。
为什么会出现下面的代码:
exec("""
a = 3
def b():
nonlocal a
a = a + 1
b() #error occurs even without this call
print(a)
"""
)
)
报错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 4
SyntaxError: no binding for nonlocal 'a' found
这是满足 text/code 比率的更多文本。
nonlocal
语句在封闭的函数命名空间中查找您命名的变量(如果在任何此类命名空间中都没有此类变量,则会引发错误)。如果没有封闭函数,则不需要 nonlocal
。如果您想要顶层的变量,则需要使用 global
语句。