HISIOISIH 发表于 2018-8-26 23:21:10

python 20课的闭包问题

两张图上的程序 为什么结果不同 ?

是不是因为第一张图funx()()   每次都先把5赋给x所以666

第二张图看了很多其他的贴a=funx() 这句话是 a就变成了指向funy函数的指针,存放了funy的地址   然后a() 就是执行funy()

但是 不是很懂 funy()里的 x加一后返回给谁了   返回给a()print输出   那x是怎么变成6

claws0n 发表于 2018-8-26 23:27:56

nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记录
【例子一】是因为每一次生成新的对象
【例子二】就可以看到变量貌似有全局的特性,但是只作用在函数范围内

HISIOISIH 发表于 2018-8-27 12:44:42

claws0n 发表于 2018-8-26 23:27
nonlocal 说明此变量已经不再是局部变量了,但是还不是全局变量
如果是局部变量,那么被改变的值将没有记 ...

哦哦nonlocal x   x就类似全局变量 改变的值不会消失

claws0n 发表于 2018-8-27 12:50:08

HISIOISIH 发表于 2018-8-27 12:44
哦哦nonlocal x   x就类似全局变量 改变的值不会消失

应该说比较像或者是C语言的【静态变量】。nonlocal 在函数外围是找不到的,它不是单纯的 local,但也不全然是 global
页: [1]
查看完整版本: python 20课的闭包问题