Python自学:理解LEGB作用域规则与全局、局部、嵌套及内建变量

0 下载量 80 浏览量 更新于2024-09-01 收藏 684KB PDF 举报
Python作用域是编程中至关重要的概念,它决定了变量的可见性和生命周期。作为自学者,理解作用域可以帮助避免常见的命名冲突和错误。本文将主要讨论Python中的四个主要作用域:全局范围、局部范围、嵌套范围以及内置函数的作用。 1. 全局范围(Global): 当你在xxx.py这样的模块文件中定义变量时,其作用域扩展到整个模块。例如,在`demo.py`中,变量`bd`被声明为全局变量,无论在函数内部还是外部,都能访问到它。然而,为了明确区分,使用`global`关键字可以在函数内部引用全局变量: ```python bd = "百度" def function_1(): global bd print(bd) function_1() # 在函数内部可以正常访问bd ``` 2. 局部范围(Local): 每个函数内部定义的变量属于局部作用域,仅限于该函数内部。如`locals()`函数内的变量`x`,在函数外部是不可见的。如果尝试在函数外部访问局部变量,会抛出`NameError`。 ```python def local(): x = 100 print("local_x =", x + 20) local() # 在这里尝试访问x会报错 print(x) # NameError: name 'x' is not defined ``` 3. 嵌套范围(Enclosed): 当一个函数嵌套在另一个函数内部时,嵌套函数的作用域被称为嵌套范围。例如,`local_in`函数内的`z`变量只在`local_in`内可见,`y`则在更外层的`local_out`函数内可见: ```python x = 20 def local_out(): y = 30 def local_in(): z = 40 print('本地变量z:', z) print('嵌套变量y:', y) local_in() print("全局变量x:", x) local_out() ``` 4. 内置函数(Built-in): Python有一些内置函数,如`print`、`len`等,它们在任何作用域下都可以直接使用,无需特别声明。这些函数是Python语言的一部分,不需要用户定义。 Python的作用域机制帮助开发者管理代码的可读性、组织性和一致性。理解并熟练运用这些作用域规则对于编写高效、清晰的代码至关重要。通过实践和理解不同作用域的特性,可以减少潜在的错误,并提升代码的复用性和维护性。