在閉包函數中,一般使用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
提交
取消