加载中...

python 中的作用域规则是什么

定义

在python中,'作用域'是指变量、函数、类等标识符的可见性和生命周期的范围。 python 采用的是LEGB规则来确定变量的作用域查找顺序

LEGB 规则

LEGB 是四个作用域层级的缩写,python 按照这个顺序来查找变量

L - Local(局部作用域)

  • 函数或者lambda 表达式内部定义的变量
  • 这些变量只能在该函数内部使用
def func():
  x = 10 #局部变量
  print(x)

func() #输出10
print(x) #报错 x 未定义

E - Enclosing function locals(嵌套函数的外层作用域)

  • 如果一个函数嵌套在另一个函数中,外部函数的变量对内部函数是可见的
def outer():
  x = 'outer'
  def inner():
    print(x) #使用的是outer函数中的x
  inner()
outer()  #输出

G -Global(全局作用域)

  • 在模块层次(不在任何函数内部)定义的变量
  • 可以在整个模块中的访问
x = 100  # 全局变量

def func():
    print(x)

func()  # 输出 100

B ——Built-in(内置作用域)

  • Python 内置的一些关键字和函数,如print()、len()、True、False等
print(len('hello')) #len 是内置作用域中的函数

修改作用域中变量:

使用global关键字修改全局变量

x = 10

def func():
    global x
    x = 20

func()
print(x)  # 输出 20

使用 nonlocal 关键字修改嵌套作用域中的变量(只适用于嵌套函数):

def outer():
    x = "A"
    def inner():
        nonlocal x
        x = "B"
    inner()
    print(x)

outer()  # 输出 "B"
posted @ 2025-06-04 15:53  最大的敌人是自律  阅读(25)  评论(0)    收藏  举报