python命名空间

admin 29 0

在Python中,命名空间是一个用于存储变量、函数、类等对象的容器,命名空间的主要目的是防止命名冲突,使得不同的代码块可以独立地使用相同的名称而不会相互干扰。

Python中有四种主要的命名空间:

1. **内置命名空间**:这是Python解释器启动时创建的命名空间,它包含了Python的内置函数和异常,`print()`, `len()`, `type()`等函数,以及`Exception`, `TypeError`, `ValueError`等异常类,都位于内置命名空间中。

2. **全局命名空间**:这是当Python脚本或主程序运行时创建的命名空间,它包含了脚本或主程序中定义的函数、类、变量等。

3. **局部命名空间**:也称为函数命名空间,这是当调用函数时创建的命名空间,它包含了函数内部定义的局部变量、函数参数等。

4. **内置命名空间和全局命名空间都是模块命名空间的一部分**:当导入一个模块时,模块的所有顶级代码(不在任何函数或类定义中的代码)都会被执行,并且这些代码定义的函数、类等都会被添加到模块命名空间中,模块命名空间是一个字典,可以通过模块名来访问其中的内容。

Python在查找一个名称时,会按照以下顺序进行搜索:

1. 局部命名空间(如果当前在函数内部)

2. 全局命名空间(如果当前在函数外部)

3. 内置命名空间

如果Python在所有这些命名空间中都没有找到名称,那么就会抛出一个`NameError`异常。

Python还提供了`globals()`和`locals()`两个内置函数,分别用于获取全局命名空间和局部命名空间的字典表示,这两个函数在调试和动态代码生成时非常有用。