gpt4 book ai didi

python - 用闭包模拟python中的静态变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:24 25 4
gpt4 key购买 nike

是否可以在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com