📅  最后修改于: 2023-12-03 15:19:31.282000             🧑  作者: Mango
在Python中,LEGB规则是指变量的查找顺序。LEGB是一个缩写词,分别代表Local、Enclosing、Global和Built-in四个作用域。
Local(局部作用域):指定在函数内部定义的变量,只在该函数内部有效。
Enclosing(闭合作用域):指在嵌套函数中外层函数的命名空间。
Global(全局作用域):指从程序运行开始就存在的变量,全局作用域可以在任意函数内部被访问。
Built-in(内置作用域):指包含Python内置函数和变量的模块,可以在程序的任意位置访问。
以下是LEGB规则的示例代码,可以帮助程序员更好地理解该规则:
# 全局变量
a = 'global'
def outer():
# 闭合作用域
b = 'outer'
def inner():
# 局部作用域
c = 'inner'
print(c) # inner
print(b) # outer
print(a) # global
inner()
outer()
print(a) # global
上面的代码中我们定义了一个全局变量a
,然后在outer()
函数中定义了一个闭合作用域的变量b
。inner()
函数则定义了一个局部作用域的变量c
。
运行程序,输出结果为:
inner
outer
global
global
从打印结果中可以看出,LEGB规则是按照从内到外的顺序进行变量查找的。在inner()
函数中,程序首先查找局部变量c
,找到后打印该变量的值,并继续查找闭合作用域的变量b
和全局变量a
。最后,在调用outer()
函数之后,程序又查找到全局变量a
并打印其值。