了解Python作用域
作用域是指变量的有效范围。对于自学者来说,如果已经进入了函数这一部分,那么就应该了解Python的作用域。否则,你可能会像我一样,总是对一个变量名在函数内外同时存在且具有不同的值感到困惑。在这篇文章中
作用域是指变量的有效范围。对于自学者来说,如果已经进入了函数这一部分,那么就应该了解Python的作用域。否则,你可能会像我一样,总是对一个变量名在函数内外同时存在且具有不同的值感到困惑。在这篇文章中,我将总结我所了解到的作用域以及LEGB规则。
1. 全局作用域(Global)
当我们创建一个文件时,就形成了一个模块,这时候就产生了一个作用域。这个范围是整个模块,被称为全局作用域。例如,在一个名为的文件中声明一个变量bd"百度",那么变量bd就是一个全局变量。
```python
bd "百度"
if True:
print(bd) 输出:百度
def function_1():
print(bd)
function_1()
```
在这个例子中,变量bd可以在函数内和函数外被使用。
2. 局部作用域(Local)
当函数被定义后,它就拥有了一个属于自己的小天地,即局部作用域。在这个范围内,可以定义变量,也可以在内部嵌套函数。但是,局部作用域中的变量只能在局部范围内使用。
```python
def locals():
x 100
print("local_x ", x)
locals()
```
输出结果:local_x 100
如果在全局范围内打印x,就会报错:
```python
def locals():
x 100
print("local_x ", x)
print(x) 错误!NameError: name 'x' is not defined
locals()
```
因此,局部变量x只能在函数内部使用,在其他地方调用时会出错。
3. 嵌套作用域(Enclosed)
当函数嵌套时,就会产生嵌套作用域,介于全局作用域和局部作用域之间。比如,一个函数嵌套了另一个函数,那么被嵌套的函数就是内部作用域,而嵌套函数的作用域就是嵌套范围的作用域。如果有更多层的嵌套,就会有多个嵌套作用域。
```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()
```
输出结果:
全局变量x: 20
嵌套变量y: 30
本地变量z: 40
4. Python的内建函数(Built-in)
内建函数是Python中天生就有的函数,无论在哪个作用域都可以直接调用。其中,最常用的莫过于print()函数。关于内建函数的详细信息,你可以在Python的文档中找到。
通过理解Python的作用域,可以更好地掌握变量的使用范围和生命周期,从而提高代码的可读性和可维护性。希望这篇文章对你有所帮助,让你更好地理解Python作用域的概念。