在 Python 中,变量的作用域指的是变量可以被访问和操作的代码区域。
Python 使用了一些规则来确定变量的作用域,这有助于组织和管理代码中的变量,并确保它们在适当的范围内使用。
一、局部作用域(Local Scope)
变量在函数内部定义的时候处于局部作用域。这意味着只有在函数内部才能访问这些变量,函数外部无法直接访问局部变量。
def my_function():
x = 10 # 局部变量
print(x)
my_function()
# print(x) # 这将引发错误,因为 x 在函数外部不可见
二、嵌套作用域(Enclosing Scope)
当一个函数嵌套在另一个函数内部时,内部函数可以访问外部函数中的变量。这些外部函数中的变量在内部函数中称为嵌套变量。
def outer_function():
y = 20 # 外部函数中的变量
def inner_function():
print(y) # 可以访问外部函数的变量
inner_function()
outer_function()
三、全局作用域(Global Scope)
在函数外部定义的变量处于全局作用域,可以在整个文件内访问。
但是,如果在函数内部尝试更改全局变量的值,需要使用 global
关键字。
z = 30 # 全局变量
def modify_global():
global z
z = 40
print(z) # 输出 30
modify_global()
print(z) # 输出 40
四、内置作用域(Built-in Scope)
这是最高级别的作用域,其中包含 Python 内置的函数和对象,例如 print()
和 len()
。这些函数和对象可以在代码的任何地方访问。
print(len("Hello")) # 使用内置函数 len()
当在代码中使用变量时,Python 首先查找变量的作用域,从局部作用域开始,然后是嵌套作用域、全局作用域和最后的内置作用域。