当前位置:首页>python>Python快速入门学习笔记十八:四种作用域

Python快速入门学习笔记十八:四种作用域

  • 2026-10-11 08:07:53
Python快速入门学习笔记十八:四种作用域
❝

Python入门第十八课,主要是学习了局部、嵌套、全局、内置四种作用域,按LEGB规则层层向外查找,共同构成变量的可见范围与访问层级。

  • 局部作用域(Local)
  • 外层作用域(Enclosing)
  • 全局作用域(Global)
  • 内建作用域(Built-in)

Python 中有4中作用域:

❏ Local(局部作用域)

❏ Enclosing(外层作用域)

❏ Global(全局作用域)

❏ Built-in(内建作用域)

当访问一个变量时,Python  会按照以下顺序查找:

❝

Local -> Enclosing -> Global -> Built-in

作用域范围图示:

下面逐个介绍。

局部作用域(Local)

定义:函数的内部就是局部作用域,局部作用域中的变量,只在该函数内部可见。

特定:

  • 每次调用函数都会创建一个新的局部作用域。
  • 函数运行结束后,局部作用域随之销毁。
  • 局部作用域优先级最高,即:查找一个变量时,Python 会首先在局部作用域中查找。

举例:

deftest():
    x = 10
    print(x) # 在局部作用域,可以访问

test()

# print(x) # 不可访问,报错:NameError: name 'x' is not defined

外层作用域(Enclosing)

定义:如果函数中有定义了函数,那么外层函数的作用域,就是内层函数的 Enclosing 作用域。

特定:

  • 只有当函数“嵌套定义”时才会出现。
  • 内层函数可以读取外层函数变量。
  • 想修改外层变量必须使用 nonlocal。

举例:

defouter():
    x = 10# outer 的局部变量,是 inner 的 Enclosing 变量

definner():
# 下面两行代码,修改外层函数作用域变量
nonlocal x
        x = 12
        print('内层函数输出:', x) # 内层函数读取外层变量

    inner()

    print('外层函数输出:', x)

outer()

全局作用域(Global)

定义:.py文件就是全局作用域,全局作用域中的变量,在当前.py文件的任何位置都可以访问。

特定:

  • 全局变量只在当前.py文件中可见。
  • 函数内部可以使用 global关键字修改全局变量。

举例:

a = 100
b = 200

deftest2():
# 以下两行代码,修改全局变量
global b
    b = 300
    print(a, b)

test2()
print(a, b) # 在文件任何位置都可以访问

内建作用域(Built-in)

定义:Python 预先定义好的东西,会放在内建作用域中,所有.py文件都可以直接使用。

特定:

  • 所有.py文件都能直接使用其中的名称,例如:print、len、range、sum、max等。
  • 查找优先级最低,即:查找一个变量时,内建作用域是“最后一道防线”。

举例:

print('hello')
len([1, 2, 3])
❝

总结

本文的内容需要多多理解。

最新文章

随机文章