模块名称空间
- 比如string模块中的atoi()函数就是string.atoi()。通过句点属性标识指定了各自的名称空间。
搜索路径和路径搜索
- 模块的带入需要一个叫做“路径搜索”的过程。
- 你需要导入某个模块,解释器会沿着“搜索路径顺序”来找到第一个符合要求的模块。
名称空间
- 名称空间是名称到对象的映射。(namespace)
- 三种名称空间,内建、全局、局部。
名称空间与变量作用域比较
- 名称空间是纯粹意义上的名字和对象间的映射关系,
- 而作用域还指出了用户代码的哪些物理位置可以访问到这些名字。
名称查找,确定作用域, 覆盖
访问一个属性时,解释器必须从三个名称空间中的一个找到它。首先从局部名称空间开始,接着全局名称空间,最后查找内建名称空间。
导入模块
一般导入模块的顺序:
- python 标准库模块
- python 第三方模块
- 应用程序自定义模块
- 空行分割这三类模块的导入语句。
import numpy as np
这是扩展的导入语句的用法。- 加载(load)只在第一次导入(import)的时候发生。
循环导入的问题
a模块需要一个新特性,于是我们写一个b模块,然后将它导入。然而b模块需要a模块的函数,所以b模块也需要导入a模块。这就会导致循环导入的问题。解决办法看情况。。。