📅  最后修改于: 2023-12-03 15:04:37.206000             🧑  作者: Mango
在Python中,当我们使用变量时,解释器需要确定该变量的作用域(即可见性范围)。LEGB规则是Python中用于确定变量范围的一种规则。
LEGB代表以下四个作用域:Local(局部)、Enclosing(嵌套)、Global(全局)和Built-in(内建)。
局部作用域是指在函数内部定义的变量,在函数外部是不可见的。这些变量只能在函数内部进行访问和修改。
def my_function():
x = 10 # 局部变量
print(x)
my_function()
# 输出:10
print(x) # 错误!x是局部变量,无法在函数外部访问
嵌套作用域是指在函数内部定义的函数中可见的变量。它允许内部函数访问外部函数的变量。
def outer_function():
y = 20 # 外部函数变量
def inner_function():
print(y) # 可以访问外部函数变量
inner_function()
outer_function()
# 输出:20
全局作用域是指在模块的全局范围内定义的变量,在整个模块中都可见和可访问。
z = 30 # 全局变量
def my_function():
print(z) # 可以访问全局变量
my_function()
# 输出:30
print(z)
# 输出:30
内建作用域是指Python内建函数和模块中的变量。这些变量可以在任何地方访问。
import math
print(math.pi) # 可以访问内建模块中的变量
# 输出:3.141592653589793
当我们引用一个变量时,Python解释器会按照LEGB的顺序查找变量。如果找到变量,则使用该变量,否则会引发NameError
异常。
使用LEGB规则可以更好地理解Python中变量的作用域和可见性范围。请确保在编写代码时遵守这些规则,以避免不必要的错误和混淆。