在 Python 中,作用域(Scope)是指程序中变量的可见范围和生命周期。理解作用域有助于编写更加健壮和可维护的代码。Python 中主要有以下几种作用域:
此外,global 关键字可以用来在局部作用域中声明全局变量。以下是详细说明和示例。
global
局部作用域指函数内部定义的变量。这些变量只能在函数内部访问。
def my_function(): x = 10 # 局部变量 x print(x) my_function() # 输出: 10 print(x) # 报错: NameError: name 'x' is not defined
全局作用域指在函数外部定义的变量,这些变量可以在整个模块中访问。
x = 20 # 全局变量 x def my_function(): print(x) # 访问全局变量 x my_function() # 输出: 20 print(x) # 输出: 20
内嵌作用域指嵌套函数中,外部函数的局部变量。这些变量在嵌套函数中可见。
def outer_function(): x = 30 # 外部函数的局部变量 def inner_function(): print(x) # 访问外部函数的局部变量 inner_function() outer_function() # 输出: 30
内建作用域是 Python 解释器内置的命名空间,包含了所有内置函数和异常。
print(len("hello")) # len 是内建函数
在局部作用域中,使用 global 关键字可以声明一个全局变量。这使得在函数内部可以对全局变量进行修改。
x = 40 # 全局变量 x def my_function(): global x # 声明 x 为全局变量 x = 50 # 修改全局变量 x print(x) # 输出: 50 my_function() print(x) # 输出: 50
x = 1 # 全局变量 x def outer_function(): x = 2 # 外部函数的局部变量 x def inner_function(): nonlocal x # 声明 x 为外部函数的局部变量 x = 3 # 修改外部函数的局部变量 x print("inner_function x:", x) # 输出: 3 inner_function() print("outer_function x:", x) # 输出: 3 outer_function() print("global x:", x) # 输出: 1
在这个示例中:
x = 1
outer_function
x = 2
inner_function
nonlocal x
理解作用域有助于避免变量命名冲突,提高代码的可读性和可维护性。
原文链接:codingdict.net