>>> def counter(start_at=0):
... count = [start_at]
... def incr():
... count[0] += 1
... return count[0]
... return incr
...
>>> count = counter(7)
>>> print count()
8
>>> print count()
9
上面的代码运行正常。我明白。但我认为以下代码应与上述相同。
>>> counter(7)()
8
>>> counter(7)()
8
嗯,它不像打印计数()。为什么呢?
答案 0 :(得分:1)
原因是每次counter(7)
调用都会创建一个单独的count
实例和单独的incr
函数。当你调用它们时,你实际上引用了不同的变量count
,因此结果如上所示。
答案 1 :(得分:0)
如果您想要计数器和计数的相同行为,请遵循以下代码:
>>> count = counter
>>> print count(7)
8
>>> print count(7)
8