模块
- 模块是Python程序架构的一个核心概念;
- 每一个以扩展名
.py
结尾的Python源代码文件都是一个模块; - 在模块中定义的全局变量 、函数、类都是提供给外界直接使用的工具;
- 模块就好比是工具包,要使用这个工具包中的工具,就需先导入这个模块;
模块的分类
- 官方标准模块
- 第三方模块
pip install 包名
- 自定义模块
模块的使用
(1)import 模块名 模块名.函数名(参数)
(2)import 模块名 as 别名 别名.函数名(参数)
(3)from 模块名 import 函数名 函数名(参数)
from 模块名 import *
- 从两个模块中导入同名的函数时,后导入模块的会覆盖掉先导入的;
- 开发时
import
代码应该统一写在代码的顶部,更容易及时发现冲突; - 一旦发现冲突,可以使用
as
关键字给其中一个工具起一个别名;
模块的搜索顺序
Python的解释器在导入模块时,会先搜索当前目录指定模块名的文件,如果有就直接导入,如果没有再搜索系统目录;内置属性__file__
可以查看当前导入模块的完整路径;
内置属性__name__
内置属性__name__
记录着一个字符串,如果是被其他文件导入的,__name__
就是模块名
;如果是当前执行的程序,__name__
就是__main__
;可以做到测试模块的代码只在测试情况下被运行,而在被导入时不会被执行;
# 导入模块
# 定义全局变量
# 定义类
# 定义函数
# 在代码的最下方
def main():
函数体
# 根据 __name__ 判断是否执行下方代码
if __name__ == "__main__":
main()
包
- 包是一个包含多个模块的特殊目录;
- 目录下有一个特殊的文件
__init__.py
; - 当模块比较多时,用包按目录组织模块;
- 使用
import 包名
可以一次性导入包中所有的模块;
创建包
- 先右键创建一个
Directory
目录,再在目录建一个__init__.py
文件 - 直接右键新建一个
Python Package
包,在建好的包中就有__init__.py
文件;
外界导入包
要在外界使用包中的模块,需要在__init__.py
中指定对外界提供的模块列表;
# 从 当前目录 导入 模块列表
from . import 模块名