模块时最高级别的程序单元,它将程序代码和数据封装起来以便重用。从实际角度看,模块往往对应于python程序文件(或是用外部语言如C、java或C#编写而成的扩展。每一文件都是一个模块,并且模块导入其他模块之后就可以使用导入模块定义的变量名。
模块可以有两个语句和一个重要的内置函数进行处理。
import
是客户端(导入者)以一个整体获取一个模块。
from
允许客户端从一个模块文件中获取特定的变量名。
imp.reload
在不中止python程序的情况下,提供了一种重新载入模块文件代码的方法。
模块通过使用自包含的变量的包,也就是所谓的命名空间提供了将部件组织为系统的简单的方法。在一个模块文件的顶层定义的所有的变量名都成了被导入的模块对象的属性。在模块导入时,模块文件的全局作用域变成了模块对象的命名空间。
python自带了很多实用的模块,称为标准链接库。
import如何工作
在python中,导入并非只是把一个文件文本插入另一个文件而已。导入其实是运行时的运算,程序第一次导入指定文件时,会执行三个步骤:
- 找到模块文件
- 编译成位码(需要时)
- 执行模块的代码来创建其所定义的对象
python必须查找到import语句所引用的模块文件。只能列出简单名称。如 import a 。路径和后缀时可以省略掉的。
模块搜索路径
- 程序的主目录
- python path 目录(如果已经进行了设置)
- 标准链接库目录
- 任何 .pth文件的内容(如果存在的话)
这四个组件组合起来就变成了sys.path。