📅  最后修改于: 2023-12-03 15:36:24.721000             🧑  作者: Mango
在 Python 中,作用域是指代码中变量的可见范围。作用域规则决定了代码的哪些部分可以访问变量。
Python 中有两种作用域:全局作用域和局部作用域。
在函数外定义的变量拥有全局作用域。这意味着它们在整个程序中都是可见和可访问的。
例如:
x = 10
def print_x():
print(x)
print_x() # 输出 10
在上面的代码中,x
是在函数外定义的。由于它拥有全局作用域,因此可以在 print_x()
函数中访问它。
在函数内定义的变量拥有局部作用域。这意味着它们只能在函数内部访问。
例如:
def add(x, y):
z = x + y
return z
print(add(2, 3)) # 输出 5
print(z) # 报错,z 是未定义的变量
在上面的代码中,z
只能在 add()
函数内部访问。如果我们在外部尝试访问它,会导致未定义的变量错误。
当一个内部函数嵌套在另一个函数中时,它们会形成一个嵌套作用域。在嵌套的作用域中,内部函数可以访问外部函数中定义的变量。
例如:
def outer_function():
x = 10
def inner_function():
print(x)
inner_function()
outer_function() # 输出 10
在上面的代码中,inner_function()
嵌套在 outer_function()
中。由于 inner_function()
是在 outer_function()
内定义的,因此可以访问 x
变量。
global
和 nonlocal
在 Python 中,可以使用关键字 global
和 nonlocal
来修改变量的作用域。
global
关键字用于在函数内部访问全局变量,并将其更改为函数外部。
例如:
x = 10
def change_x():
global x
x = 20
change_x()
print(x) # 输出 20
在上面的代码中,使用 global
关键字在 change_x()
函数内访问全局变量 x
,并将其更改为 20。
nonlocal
关键字用于在嵌套函数中访问外部函数的变量,并将其更改为嵌套函数内部。
例如:
def outer_function():
x = 10
def inner_function():
nonlocal x
x = 20
inner_function()
print(x)
outer_function() # 输出 20
在上面的代码中,使用 nonlocal
关键字在 inner_function()
中访问 outer_function()
中定义的变量 x
,并将其更改为 20。
作用域规则是 Python 中重要的概念之一,理解作用域是编写高质量代码的关键。在 Python 中,有全局作用域和局部作用域,并且可以使用关键字 global
和 nonlocal
来修改变量的作用域。