python中的索引规则_python – 范围规则的简短描述?

实际上,从Learning Python, 3rd. Ed.开始,Python Scope解析的简明规则.(这些规则特定于变量名称,而不是属性.如果您在没有句点的情况下引用它,则适用这些规则)

LEGB规则.

L,Local – 在函数内以任何方式分配的名称(def或lambda)),并且在该函数中未声明为全局.

E,Enclosing-function locals – 从内到外的任何和所有静态封闭函数(def或lambda)的局部范围中的名称.

G,全局(模块) – 在模块文件的顶级分配的名称,或通过在文件中的def中执行全局语句.

B,内置(Python) – 在内置名称模块中预先分配的名称:open,range,SyntaxError,…

所以,在这种情况下

code1

class Foo:

code2

def spam.....

code3

for code4..:

code5

x()

for循环没有自己的命名空间.在LEGB顺序中,范围将是

L:本地,def垃圾邮件(代码3,代码4,代码5).

E:封闭函数,任何封闭函数(如果整个示例都在另一个def中)

G:全球.在模块(code1)中是否全局声明了x?

B:Python中的任何内置x.

在代码2中永远不会找到x(即使在您可能期望的情况下,也可以参见Antti’s answer或here).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值