鱼C论坛

 找回密码
 立即注册
查看: 217|回复: 5

请问没用nonlocal为什么下面代码依然能正常运行

[复制链接]
发表于 2020-4-4 20:35:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
无论x是在函数内还是函数外被定义,函数没有用nonlocal,但却都识别了x的值,为什么呢?
>>> def abc():
        x=3
        def ccc():
                a=2*x
                return a
        return ccc()

>>> abc()
6

-----------------------------------------


>>> x=5
>>> def abc():
        def ccc():
                a=2*x
                return a
        return ccc()

>>> abc()
10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-4 20:42:32 | 显示全部楼层
因为这些x的作用域涵盖了闭包函数ccc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 20:45:26 | 显示全部楼层
可以识别,但是不能赋值。
所以你单独访问x的值是可以的,
就是不能x *= x这样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 20:58:02 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-4 22:33:45 | 显示全部楼层
可以访问,不可以修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-5 13:19:36 | 显示全部楼层
可以访问,但是不能修改。修改就要加 nonlocal 或者 global 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 23:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表