在闭包函数中,一般使用nonlocal声明非局部变量,例如:
def func1(): num=0 def iner(): nonlocal num num+=1 return num return iner res1=func1() print([res1(),res1(),res1(),res1()])#输出[1,2,3,4]
但今天看到一种另外的写法,可以实现同样的效果:
def func2(): func2.num=0 def iner(): func2.num+=1 return func2.num return iner res2=func2() print([res2(),res2(),res2(),res2()]) #输出[1,2,3,4]
像这样,与定义类属性相似的方式,却使用函数名来声明非局部变量的方式,有点不懂....
有没有大神可以解释下?
慕姐8265434
相关分类