【概念】
- 每个以扩展名 .py 结尾的Python源文件都是一个模块。
- 模块名同样也是一个标识符,需要符合标识符的命名规则。
- 在模块中定义的全局变量,函数,类都是提供给外界直接使用的工具。
- 模块就好比是工具包,想使用这个工具包中的工具,就需要先导入这个模块。
【两种导入方式】
1. import 模块名
一次性把模块中的所有工具全部导入,通过 模块名或别名 访问
使用 as 指定模块的别名,import 模块名 as 模块别名(大驼峰命名规则)
2. from 模块名 import 工具名
从模块导入某一个工具
导入后不需要通过模块名就可直接用模块提供的工具(全局变量,函数,类)
若两个模块存在同名的函数,那么导入模块函数会覆盖掉先导入的函数。
【模块的搜索顺序】
1. 搜索当前目录下指定模块名的文件,如果有就直接导入。
2. 如果当前目录没有,在搜索系统名录。(开发时给文件起名,不要和系统的模块文件重名)
Python中每一个模块都有一个内置属性 __file__ 可以查看模块的完整路径
【开发原则】
每个文件都应该是可以被导入的
一个独立的Python文件就是一个模块
再导入文件时,文件中所有没有任何缩进的代码都会被执行一遍
实际开发中,每个模块都是独立开发的,大多都有专人负责。开发人员通常会在模块下方增加一些测试代码。
测试代码仅在模块内使用,而被导入其他文件中不会被执行。
__name__,可以做到测试模块的代码只在测试下被运行,被导入时不会被执行
- 是Python的一个内置函数,记录着一个字符串
- 若是被其他文件导入,__name__就是文件名
- 若是当前执行的程序(模块),__name__是__main__
if __name__ == "__main__"
print("只在自己模块内执行")
【包 Package】
包是一个包含多个模块的特殊目录
目录下有一个特殊的文件 __init__.py
包名的命名方式和变量一样,小写字母_数字
使用 import 包名可以一次性导入包中所有的模块
__init__,外界要使用包中的模块,需在 __init__.py 中指定对外界提供的模块列表
__init__是一个空文件,将它放在某个目录中,就可以将该目录中的其它 .py 文件作为模块被引用
【发布模块】
将开发的模块分享给其他人
1. 制作发布压缩包步骤
- 创建 setup.py (参数信息)
- 构建模块 $ python3 setup.py build
- 生成发布 $ python3 setup.py sdist
2. 安装模块
- $ tar -zxvf message.tar.gz 解压压缩包
- $ sudo python3 setup.py install 安装模块
3. 卸载模块
- 直接从安装目录下吧安装模块的目录删除就可以