是否可以在 python 中编写一个函数,它接受一个参数 a 并打印 h+a 的结果,其中 h 是一个局部变量。然后它应该返回自身,h 增加 1。
最佳答案
在 python 3 中,你可以这样做:
>>> def f(a):
... h = 1
... def inner():
... nonlocal h
... print(a+h)
... h += 1
... return inner
... return inner
...
>>> g = f(3)
>>> g = g()
4
>>> g = g()
5
>>> g = g()
6
>>> g()()()
7
8
9
<function inner at 0xb71bcd6c>
以前的版本需要伪造它:
>>> def f(a):
... h = [1]
... def inner():
... print a + h[0]
... h[0] += 1
... return inner
... return inner
...
>>> f(3)()()()
4
5
6
<function inner at 0x10041f050>
>>>
(预计到达时间:我想我误解了部分问题,因为您似乎希望 f
返回的函数(并返回自身)接受参数,但这是一个微不足道的变化。)
关于python - 用闭包模拟python中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175323/