Python中变量作用域
Python中的变量作用域。了解变量的作用域对于编写和调试Python代码至关重要。让我们详细了解一下吧!
什么是变量作用域
在Python中,变量的作用域决定了变量的可访问范围。主要有四种作用域:局部作用域(Local)、嵌套作用域(Enclosed)、全局作用域(Global)和内置作用域(Built-in),简称LEGB规则。
注意
内置作用域包含了Python提供的所有内置函数和变量,如print
、len
、range
等,这些函数和变量在任何地方都可以使用,不受局部或全局作用域的限制。
局部作用域(Local Scope)
局部作用域指的是在函数内部定义的变量,只在函数内部可访问。
def local_scope_example():
local_var = "我是局部变量"
print(local_var)
local_scope_example()
# print(local_var) # 这行代码会报错,因为local_var在函数外部不可访问
在这个例子中,local_var
是局部变量,只在local_scope_example
函数内部可访问。
嵌套作用域(Enclosed Scope)
嵌套作用域指的是在嵌套函数中,内部函数可以访问外部函数的变量。
def outer_function():
outer_var = "我是外部变量"
def inner_function():
print(outer_var)
inner_function()
outer_function()
在这个例子中,inner_function
可以访问outer_function
中的变量outer_var
。
全局作用域(Global Scope)
全局作用域指的是在模块级别定义的变量,整个模块内都可以访问。
global_var = "我是全局变量"
def global_scope_example():
print(global_var)
global_scope_example()
print(global_var)
在这个例子中,global_var
是全局变量,函数内部和外部都可以访问。
内置作用域(Built-in Scope)
内置作用域指的是Python内置的变量,例如函数print
和len
等。
print("Hello, world!")
print(len([1, 2, 3]))
在这个例子中,print
和len
函数是Python内置的,可以在任何地方访问。
global 关键字
global
关键字用于在函数内部声明全局变量。
global_var = "我是全局变量"
def modify_global_var():
global global_var
global_var = "修改后的全局变量"
modify_global_var()
print(global_var)
在这个例子中,使用global
关键字在函数内部修改全局变量。
nonlocal 关键字
nonlocal
关键字用于在嵌套函数中声明外部非全局变量。
def outer_function():
outer_var = "我是外部变量"
def inner_function():
nonlocal outer_var
outer_var = "修改后的外部变量"
inner_function()
print(outer_var)
outer_function()
在这个例子中,使用nonlocal
关键字在内部函数中修改外部变量outer_var
。
LEGB规则
Python查找变量的顺序遵循LEGB规则:
- Local(局部作用域)
- Enclosed(嵌套作用域)
- Global(全局作用域)
- Built-in(内置作用域)
总结
总结一下,Python中的变量作用域分为局部作用域、嵌套作用域、全局作用域和内置作用域。理解这些作用域及其查找顺序(LEGB规则)对于编写和调试Python代码非常重要。