不明白为什么发生UnboundLocalError 我在这做错了什么?counter = 0def increment():
counter += 1increment()上面的代码抛出了一个UnboundLocalError。
4 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
拉风的咖菲猫
TA贡献1995条经验 获得超2个赞
要回答主题中的问题,*是,Python中有闭包,除了它们只适用于函数内部,并且(在Python 2.x中)它们是只读的; 您无法将名称重新绑定到其他对象(但如果该对象是可变的,则可以修改其内容)。在Python 3.x中,您可以使用nonlocal
关键字来修改闭包变量。
def incrementer(): counter = 0 def increment(): nonlocal counter counter += 1 return counter return increment increment = incrementer()increment() # 1increment() # 2
*原始问题的标题询问了Python中的闭包。
侃侃无极
TA贡献2051条经验 获得超10个赞
您的代码抛出的UnboundLocalError
原因已经在其他答案中得到了很好的解释。
但在我看来,你正试图建立一些类似的东西itertools.count()
。
那你为什么不尝试一下,看看它是否适合你的情况:
>>> from itertools import count>>> counter = count(0)>>> counter count(0)>>> next(counter)0>>> counter count(1)>>> next(counter)1>>> counter count(2)
添加回答
举报
0/150
提交
取消