Skip to main content
 首页 » 编程设计

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

2025年05月04日17java哥

是否可以在 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 返回的函数(并返回自身)接受参数,但这是一个微不足道的变化。)