有状态的函数
平常我们写的都是无状态函数,都是易于理解的
其实我们是可以给函数加状态的:这里给出三种方式,实现有状态的函数
1、全局变量
这是我们最先能想到的,易理解,但其实也是最不提倡的一种方式
2、闭包
相比于全局变量,封装性更好一些,不会污染全局的命名空间
1 def get_num(): 2 num = 0 3 4 def _get_num(): 5 nonlocal num 6 num += 1 7 return num 8 9 return _get_num 10 11 12 g = get_num() 13 print(g()) 14 print(g())
output:
1
2
3、类
在实例方法内改变状态
综上比较提倡后两者