鱼C论坛

 找回密码
 立即注册
查看: 4689|回复: 4

小白求问LEGB的相关内容

[复制链接]
发表于 2023-9-13 17:02:49 | 显示全部楼层

回帖奖励 +5 鱼币

在这个例子中,class C下面的x = 3属于L(Local)。

LEGB是Python中变量作用域的规则,其中L(Local)表示本地作用域,即函数或类中定义的变量。在这个例子中,x = 3是在类C的定义中定义的,因此它在类C的本地作用域中。在类的方法中,使用self.x来引用类C的实例变量x,而在方法m1和m3中,使用print(x)来引用本地变量x,它们都指的是在函数test中定义的本地变量x,值为2。在方法m2中,使用x = 4创建了一个新的本地变量x,它的作用域仅限于方法m2中。self.x = 5将类C的实例变量x的值更改为5。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-13 17:30:46 | 显示全部楼层

回帖奖励 +5 鱼币

离柒 发表于 2023-9-13 17:20
那请问为什么print(x)引用的是本地变量x=2(按我的理解它应该是属于嵌套函数的外层作用域E?),而不是x  ...

chatgpt的回答是错误的,x = 3 并不在LEGB的范畴,而是在 C 这个类的命名空间中的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-13 17:31:25 | 显示全部楼层

回帖奖励 +5 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-2 00:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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