在Python中,作用域是指变量和函数在代码中的可见范围。Python的作用域分为四种:局部作用域(Local)、嵌套局部作用域(Enclosing)、全局作用域(Global)和内置作用域(Built-in)。下面我们详细讨论一下局部作用域与其他作用域的区别:
示例:
def my_function():
local_var = 10 # 局部变量
print(local_var)
my_function() # 输出:10
print(local_var) # 报错:NameError: name 'local_var' is not defined
global
关键字声明。示例:
global_var = 10 # 全局变量
def my_function():
global global_var # 声明使用全局变量
global_var = 20 # 修改全局变量的值
my_function()
print(global_var) # 输出:20
nonlocal
关键字声明。示例:
def outer_function():
enclosing_var = 10 # 嵌套局部变量
def my_function():
nonlocal enclosing_var # 声明使用嵌套局部变量
enclosing_var = 20 # 修改嵌套局部变量的值
my_function()
print(enclosing_var) # 输出:20
outer_function()
print(enclosing_var) # 报错:NameError: name 'enclosing_var' is not defined
示例:
def my_function():
print(len([1, 2, 3])) # 使用内置函数len()
my_function() # 输出:3
总结一下,局部作用域与其他作用域的主要区别在于它们的作用范围和生命周期。局部作用域仅在函数内部可见,生命周期仅限于函数执行期间。全局作用域在整个程序范围内可见,生命周期贯穿整个程序执行过程。嵌套局部作用域在另一个函数内部定义,可以访问其外部函数的局部变量。内置作用域包含Python内置函数和异常,在整个程序范围内都可见。