Python 作用域规则
在编程中,"作用域"是一个非常重要的概念,它决定了变量在程序的哪些部分是可见和可访问的。理解Python的作用域规则不仅能帮助你避免变量命名冲突,还能让你更好地组织和管理代码。
什么是作用域?
作用域(Scope)是变量的可见范围,即在程序的哪些部分可以访问或引用该变量。简单来说,作用域决定了变量的"生命周期"和"可见性"。
Python有四种不同级别的作用域:
- 局部作用域(Local Scope):在函数内定义的变量
- 嵌套作用域(Enclosing Scope):在外层函数中定义的变量
- 全局作用域(Global Scope):在模块层次中定义的变量
- 内置作用域(Built-in Scope):Python预定义的变量名
这四种作用域构成了Python的LEGB规则:Local -> Enclosing -> Global -> Built-in。Python按照这个顺序查找变量。
局部作用域(Local Scope)
局部作用域是指在函数内部定义的变量,这些变量只在函数内部可见,函数执行结束后就会被销毁。
def my_function():
x = 10 # 局部变量
print(f"函数内部x的值: {x}")
my_function()
# 下面这行会报错,因为x只在函数内部有定义
# print(f"函数外部x的值: {x}") # NameError: name 'x' is not defined
输出:
函数内部x的值: 10