我正在努力实现以下目标:
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行为
我错过了什么
您正在查找
nonlocal
关键字。它允许您访问在周围范围中定义的变量,但不能访问全局范围现在,它应该按照您的预期工作
相关问题 更多 >
编程相关推荐