我想知道是否有办法在函数实例中包含成员变量。例如,
incr_instance = incrementor(1)
incr_instance()
incr_instance()
incr_instance()
打印出来
1
2
3
是的,我知道我可以只使用一个类,但这是一个关于 python 语言中奇怪的语言怪癖的问题。
请您参考如下方法:
你可以有一个函数 incrementor 返回另一个不断增加计数器 n 的函数(内部函数使用 nonlocal n 来访问 n 而不是使用 incrementor.n):
def incrementor(n):
def inc():
nonlocal n
n += 1
return n - 1
return inc
测试:
incr_instance = incrementor(1)
incr_instance_2 = incrementor(10)
print(incr_instance())
print(incr_instance())
print(incr_instance())
print(incr_instance_2())
print(incr_instance_2())
print(incr_instance_2())
print(incr_instance())
print(incr_instance())
print(incr_instance())
print(incr_instance_2())
print(incr_instance_2())
print(incr_instance_2())
输出:
1
2
3
10
11
12
4
5
6
13
14
15
