美文网首页
python中搜索变量的【LEGB】法则 2020-01-18(

python中搜索变量的【LEGB】法则 2020-01-18(

作者: 9_SooHyun | 来源:发表于2020-01-18 17:35 被阅读0次

【LEGB】法则

L-Local:在本地函数内部搜索变量
E-Enclosing function:在外部嵌套函数(如闭包closure)内部搜索变量
G-Global:在函数定义的模块(即函数定义的.py文件)搜索全局变量
B-Builtin:搜索Python的内建变量

LEGB法则是python搜索变量的法则,举一个例子:

# this is test.py

# G-Global变量x=1
x = 1
def f1():
    # E-Enclosing function变量x=2
    x = 2
    def f2():
        # L-Local变量x=3
        x = 3
        return x
    return f2

在上面的test.py中,真正需要x的地方只有一处——return x
那么,python执行到return x时,就会按照【LEGB】法则搜索这个x变量到底引用了哪一个值

  • 在f2中,搜索到L-Local变量x=3,停止继续向外搜索
  • 若f2中不存在L-Local变量x=3,则继续向外搜索,这时将在外层嵌套函数f1中搜索到E-Enclosing function变量x=2,停止搜索
  • 若f2和f1中都未定义变量x,那么会继续向外搜索该模块下的全局变量,找到G-Global变量x=1
  • 如果LEG都找不到变量,会再去python的B-Builtin变量中找

相关文章

  • python中搜索变量的【LEGB】法则 2020-01-18(

    【LEGB】法则 L-Local:在本地函数内部搜索变量E-Enclosing function:在外部嵌套函数(...

  • Python基础教程:变量的作用域

    1、变量作用域LEGB 1.1变量的作用域 在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空...

  • python闭包和装饰器

    一、python函数作用域LEGB python解释器查找变量的原则(顺序):L→E→G→BL:Local函数内部...

  • Python函数

    函数作用域LEGB LEGB:L>E>G>B 闭包 Closure:内部函数中对enclosing作用域的变量进行...

  • python的作用域

    前言  作用域是程序运行时变量可被访问的范围。 作用域  python变量的作用域很简单,就是LEGB:变量名引用...

  • 2018-03-20作用域和添加实例属性和方法

    一、LEGB 规则 Python 使用 LEGB 的顺序来查找一个符号对应的对象 locals -> enclos...

  • Python 全局变量、LEGB原则

    全局变量 Python 的全局变量是模块 (module) 级别的 当在函数中使用变量名时,Python 依次搜索...

  • Python中的LEGB规则

    前言 理解LEGB前,首先需要对Python的作用域、命名空间有一定的了解,话题才能继续展开。 命名空间 命名空间...

  • python基础2.2 True+True

    python的作用域规则:LEGB原则 为什么Python会认为两个完全不同的对象拥有相等的值?在Python中布...

  • Python3的LEGB规则

    阐述LEGB前,需要先对Python的命名空间、作用域有一定的了解。 命名空间 命名空间表示变量的可见范围,一个变...

网友评论

      本文标题:python中搜索变量的【LEGB】法则 2020-01-18(

      本文链接:https://www.haomeiwen.com/subject/yhakzctx.html