gpt4 book ai didi

python - 具有嵌套函数范围的 UnboundLocalError

转载 作者:IT老高 更新时间:2023-10-28 22:03:21 26 4
gpt4 key购买 nike

我有这样的代码(简化):

def outer():
ctr = 0

def inner():
ctr += 1

inner()

但是ctr会报错:

Traceback (most recent call last):
File "foo.py", line 9, in <module>
outer()
File "foo.py", line 7, in outer
inner()
File "foo.py", line 5, in inner
ctr += 1
UnboundLocalError: local variable 'ctr' referenced before assignment

我该如何解决这个问题?我认为嵌套范围可以让我这样做。我已经尝试过使用“全局”,但它仍然不起作用。

最佳答案

如果您使用的是 Python 3,则可以使用 nonlocal 语句启用重新绑定(bind)非本地名称:

def outer():
ctr = 0

def inner():
nonlocal ctr
ctr += 1

inner()

如果您使用没有 nonlocal 的 Python 2,则需要在不重新绑定(bind)裸名的情况下执行递增(通过将计数器保留为某个裸名的项或属性,作为一个裸名本身)。例如:

...
ctr = [0]

def inner():
ctr[0] += 1
...

当然也可以使用 ctr[0],无论您现在在哪里使用裸 ctr

关于python - 具有嵌套函数范围的 UnboundLocalError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com