{site_name}

{site_name}

🌜 搜索

Python 中的作用域和命名空间是程序中的两个重要概念

Python 𝄐 0
python命名空间和作用域的关系,python中作用域,python3 作用域,python作用域从大到小排序,python的命名空间,python名称空间
Python 中的作用域和命名空间是程序中的两个重要概念。作用域指的是一个变量或函数在程序中的可见范围,而命名空间则是一个包含变量和函数名称的容器。

Python 中有四种不同类型的作用域:

1. L (Local):局部作用域,定义在函数内部。
2. E (Enclosing):嵌套作用域,定义在函数内部并且包含了其他函数的作用域。
3. G (Global):全局作用域,定义在模块级别的范围。
4. B (Built-in):内置作用域,定义在 Python 内置模块中的变量或函数。

当 Python 程序使用一个变量时,解释器会首先在当前作用域中查找该变量的值。如果没有找到,则继续在上层作用域中查找,直到找到为止。如果在最外层的全局作用域中仍然找不到变量的值,那么解释器将引发 NameError 异常。

下面是一个简单的示例,展示了 Python 的作用域和命名空间:

python
# 全局作用域
x = 10

def foo():
# 局部作用域
y = 20

def bar():
# 嵌套作用域
z = 30
print(x, y, z)

bar()

foo()


在上面的代码中,变量 x 在全局作用域中定义。函数 foo() 定义在全局作用域中,但是它创建了一个新的局部作用域,并在该作用域中定义了变量 y。函数 bar() 定义在 foo() 中,并且创建了另一个嵌套的作用域,在该作用域中定义了变量 z。当 Python 解释器执行 bar() 函数时,它会先在 bar() 的作用域中查找变量 z,然后再在 foo() 的作用域中查找变量 y,最后在全局作用域中查找变量 x。

因此,上面的代码将输出:


10 20 30