了解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作用域的概念。

标签: