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

[问题求助] 请问没用nonlocal为什么下面代码依然能正常运行

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

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

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

×
无论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
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-4-4 20:42:32 | 显示全部楼层
因为这些x的作用域涵盖了闭包函数ccc
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

发表于 2020-4-4 20:45:26 | 显示全部楼层
可以识别,但是不能赋值。
所以你单独访问x的值是可以的,
就是不能x *= x这样的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

发表于 2020-4-4 20:58:02 来自手机 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

发表于 2020-4-4 22:33:45 | 显示全部楼层
可以访问,不可以修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

发表于 2020-4-5 13:19:36 | 显示全部楼层
可以访问,但是不能修改。修改就要加 nonlocal 或者 global 。
小甲鱼最新课程 -> https://ilovefishc.com
回复 顶 踩

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-11-13 08:20

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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