【发布时间】:2019-02-18 17:51:08
【问题描述】:
我正在尝试完成以下任务:
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 行为。
我在这里错过了什么?
【问题讨论】:
标签: python python-3.x