0

为什么下面的代码:

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

这是满足文本/代码比率的更多文本。

4

1 回答 1

0

nonlocal语句在封闭的函数命名空间中查找您命名的变量(如果在任何此类命名空间中没有此类变量,则会引发错误)。如果没有封闭函数,则不需要nonlocal. 如果您希望在顶层有一个变量,则需要使用该global语句。

于 2020-08-23T00:57:12.627 回答