python特殊的声明非局部变量的写法,求解释!

在闭包函数中,一般使用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]

像这样,与定义类属性相似的方式,却使用函数名来声明非局部变量的方式,有点不懂....
有没有大神可以解释下?


ABOUTYOU
浏览 789回答 1
1回答

慕姐8265434

一句话,万物皆对象,函数也如此。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python