1. LEGB查找原则(局部,嵌套,全局,内置作用域)
  2. Python闭包(def套一个def,特点是能记住当时的嵌套作用域)
  3. Python装饰器(一种特殊的闭包,给多个函数添加相同的功能,如计时功能)

LEGB查找原则

当引用一个变量时,Python按以下顺序依次进行查找:

  1. 本地作用域
  2. 上层嵌套函数的作用域
  3. 全局作用域
  4. 内置作用域

第一个能够完成查找的就算成功,就会停止往下查找

Untitled

str # 4.(B) 内置模块名
print(str)

str = "G"  # 3. (G) 全局作用域

def computer(value=20):
    # 嵌套作用域内的变量:value, prize, str
    def prize():
        # str = "L"
        print("str:", str)  # 1.(L) 本地变量
        print("inner:", value)

    str = "E"  # 2.(E) 上一层结构中的def或lambda的本地作用域
    prize()

computer(88)
word = "global"

def outer(word="TAT"):
    # 作用域:word, inner
    print(word)
    def inner():
        print(word)
    word += "enclose"

    inner()

outer()
print(word)