python 20课的闭包问题
两张图上的程序 为什么结果不同 ?是不是因为第一张图funx()() 每次都先把5赋给x所以666
第二张图看了很多其他的贴a=funx() 这句话是 a就变成了指向funy函数的指针,存放了funy的地址 然后a() 就是执行funy()
但是 不是很懂 funy()里的 x加一后返回给谁了 返回给a()print输出 那x是怎么变成6 nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记录
【例子一】是因为每一次生成新的对象
【例子二】就可以看到变量貌似有全局的特性,但是只作用在函数范围内 claws0n 发表于 2018-8-26 23:27
nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记 ...
哦哦nonlocal x x就类似全局变量 改变的值不会消失 HISIOISIH 发表于 2018-8-27 12:44
哦哦nonlocal x x就类似全局变量 改变的值不会消失
应该说比较像或者是C语言的【静态变量】。nonlocal 在函数外围是找不到的,它不是单纯的 local,但也不全然是 global
页:
[1]