```htmlPython 变量作用域解析:LEGB 规则详解
Python 变量作用域解析:LEGB 规则详解
在 Python 编程中,理解变量的作用域是非常重要的。Python 使用一种称为 LEGB 的规则来查找变量的定义。LEGB 是 Local、Enclosing、Global 和 Built-in 的首字母缩写,分别代表局部、封闭、全局和内置作用域。
Local(局部)作用域
当一个变量在函数内部被定义时,它就具有局部作用域。这意味着这个变量只能在这个函数内部访问。一旦函数执行完毕,这个变量就会被销毁。
def my_function():
x = 10 # x is a local variable
print(x)
my_function()
# print(x) # This will cause an error because x is not defined in this scope
Enclosing(封闭)作用域
封闭作用域指的是在一个函数内部定义的另一个函数。在这种情况下,内部函数可以访问外部函数的变量,但外部函数不能访问内部函数的变量。
def outer_function():
y = 5 # y is in the enclosing scope
def inner_function():
print(y) # inner_function can access y from the enclosing scope
inner_function()
outer_function()
Global(全局)作用域
全局变量是在函数外部定义的变量,可以在整个程序中访问。如果你想在一个函数内部修改全局变量的值,你需要使用 global 关键字。
z = 15 # z is a global variable
def modify_global():
global z
z = 20 # Now we are modifying the global variable z
print(z) # Output: 15
modify_global()
print(z) # Output: 20
Built-in(内置)作用域
内置作用域包含了 Python 内置的函数和变量,如 len()、str() 等。这些函数和变量在整个程序中都是可用的。
print(len("Hello, World!")) # len is a built-in function
通过了解 LEGB 规则,你可以更好地控制你的代码中的变量,并避免一些常见的错误。记住,当你在查找一个变量的定义时,Python 会按照 L-E-G-B 的顺序进行搜索。
```