4.1 模块(module)
模块定义
模块可以包含可执行的语句和函数的定义,模块内的语句目的是初始化模块,而且只在import语句第一次导入该模块时才执行。
简单说就是把一些常用方法封装到一个文件,不需要每次编程都写一长串的方法。
模块的导入和使用
- import …
- from … import …
- 第一个…为模块名,第二个…为模块内的方法
- 直接使用方法:
- as 启用别名
- import moudle as my
- from module import method as my
- from module import *
- 会将模块内所有非私有变量全部导入
- 不建议使用这种方式导入,易产生混乱
- 可以在模块内使用__all__进行约束
注意事项
- 模块必须和执行文件处于同一级目录下
- 模块内的变量名如果以一个下划线,开头表示私有变量不能被引用
- 如果模块既被其他脚本引用,自身也在使用,应当利用__name__在自身使用和被引用时表现出不同值的特点进行控制
if __name__ == '__main__'
模块自身运行时执行的代码
- 自定义的模块名不应当和系统内置或者安装的模块名重复
深入理解
- 导入模块,是新建一块名称空间,存放模块内的名字,并将里面的名字与模块名进行绑定,以便在执行文件引用
- 模块搜索路径
- sys.path可以查看
- 顺序为:
- 当前目录下的模块
- 内置模块
- 安装的拓展模块
- 导入当前目录下的模块时会生成编译的模块缓存文件,以便下一次更快地加载模块
- dir()函数可以查看模块内定义的方法,不会列出内置函数或者变量的名字