在閉包函數(shù)中,一般使用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]但今天看到一種另外的寫(xiě)法,可以實(shí)現(xiàn)同樣的效果: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]像這樣,與定義類(lèi)屬性相似的方式,卻使用函數(shù)名來(lái)聲明非局部變量的方式,有點(diǎn)不懂....有沒(méi)有大神可以解釋下?
添加回答
舉報(bào)
0/150
提交
取消