为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ABOUTYOU 2018-11-13 20:23:58
在闭包函数中,一般使用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]像这样,与定义类属性相似的方式,却使用函数名来声明非局部变量的方式,有点不懂....有没有大神可以解释下?
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

一句话,万物皆对象,函数也如此。

查看完整回答
反对 回复 2018-11-13
  • 1 回答
  • 0 关注
  • 787 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信