什么是包
包的本质就是一个包含有__init__.py文件的文件夹
包是模块的一种形式
所以包用来被当做模块导入使用
导入包其实就是在导入包下__init__.py这个文件
为何要用包
就是将功能分类放入文件夹,以后通过文件名可以瞬间定位的需要的功能,一个模块越写越大才要定义成包,通常下载的第三方文件才会打包成一个包
如何用包
相对导入和绝对导入只能在包下使用,相对导入不受文件夹名变动影响,通常
包的使用实例
有项目文件夹下
项目文件夹下有aaa文件夹
aaa文件夹下有一个__init__.py文件
from .m1 import f1 #相对导入模块,以包的顶级目录为起始
from .m2 import f2
from .bbb.m3 import f3
PS:相对导入的格式,.代表当前在哪个文件这个.就代表哪个文件所在的文件夹
aaa文件夹下有一个子包bbb
bbb文件夹里面有一个m3模块
需求是m3需要调用m1模块里面的f1功能
两个点就是返回上级目录
from ..m1 import f1
aaa文件夹下有一个m1.py文件,里面有一个功能f1
aaa文件夹下有一个m2.py文件,里面有一个功能f2
PS:包内的文件全部是以导入为使用,不是用右键运行的
在run.py文件内
需求已文件夹名调用模块
import sys
sys.path.append(r'D:周末三期day09dir') #把aaa所在的文件夹加入环境变量
PS:包的设计者不会考虑你下载后把包放在哪一个目录下,而且也不可能知道你会放入哪一个目录下,所以我们下载包后,放入文件夹,需要把环境变量加入环境变量中
import aaa # aaa是指向包下的__init__.p
aaa.f3() #直接可以调用,以文件夹的名字.模块名进行调用