在闭包函数中,一般使用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]像这样,与定义类属性相似的方式,却使用函数名来声明非局部变量的方式,有点不懂....有没有大神可以解释下?
添加回答
举报
0/150
提交
取消