一、包的定义
包是将模块以文件夹的组织形式进行分组管理的方法
二、包的作用
a、将一系列模块进行分类管理,有利于访问命名冲突
b、可以在需要时加载一个或部分模块,而不是全部模块
三、包的结构示例
mypack/
__init__.py
games/
__init__.py
office/
__init__.py
创建命令:
mkdir mypack
cd mypack
touch __init__.py
mkdir games office
cd games
touch __init__.py
cd ../office
touch __init__.py
四、__init__.py 文件
a、__init__.py 是常规包内必须存在的文件b、__init__.py 会在包加载时被自动调用
__init__.py作用
a、编写此包的内容
b、在内部填写包的文档字符串
c、在__init__.py文件内可以加载此包所依赖的其他模块
五、包的导入语法
# 同模块的导入规则相同import 包名 [as 包别名]
import 包名.模块名 [ as 模块新名]
import 包名.子包名.模块名 [as 模块新名]
from 包名 import 模块名 [as 模块新名]
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]
from 包名 import *
from 包名.子包名 import *
from 包名.子包名.模块名 import *
六、说明
当子包或子包内的模块被导入时,上一层的包也会被先导入
例如
import
# 实质会先导入mypack,再导入games,再导入contra
from import tanks
七、包的相对导入
包的相对导入是指包内的模块的相互导入
语法
a、from 相对路径包或模块 import 属性或模块名
b、from 相对路径包或模块 import *
相对路径
在 from xxx import 语句中,xxx部分可以使用相对路径
. 代表当前目录
.. 代表上一级目录
... 代表上二级目录
.... 以此类推
注:
a、相对导入时不能超出包的外部
b、相对导入要避免循环导入
八、包的__all__列表
作用
用来记录此包中有哪些子包或模块需要导入
当用from 包 import *语句导入时,只查找__all__中的模块或子包
说明
__all__列表只在from xxx import * 语句时起作用
九、附录
人工智能(python)—— 目录汇总