我正在尝试完成以下操作:
def counter():
_n = 0
def _increase():
_n += 1
return _n
return _increase
上面的例子应该是这样的:
>>> c = counter()
>>> c()
1
>>> c()
2
>>> c()
3
但是,在尝试重现此问题时,出现以下错误:
>>> c = counter()
>>> c()
UnboundLocalError: local variable '_n' referenced before assignment
看起来它正在尝试在本地范围内查找变量,所以我将代码更改为以下内容:
def counter():
_n = 0
def _increase():
global _n
_n += 1
return _n
return _increase
看起来它现在可以很好地找到它,但显然它没有初始化,即使我_n = 0
在声明函数之前就已经执行了。
>>> c = counter()
>>> c()
NameError: name '_n' is not defined
显然我做错了什么,在这种情况下我不知道特定的 Python 行为。
我在这里想念什么?