看过好几遍了,每次都记不住。好记性不如烂笔头,这次学了好好记一下
https://www.jianshu.com/p/73f7fbf75183
首先,如果一个文件没有__init__.py文件,他就不能叫做一个包,只能说是目录。那包和目录的区别在哪呢?
1. 简化模块导入操作
假设目录结构为:
这样其他地方要使用其中某一个py文件时,导入方式是这样的:
但是如果目录中有了 __init__.py,并在__init__.py中加入以下内容:
上面的语句等价于:
from mypackage import subpackage_1, subpackage_2
因此在其他地方导入时,只需要写import mypackage, subpackage_1 和 subpackage_2就会被导入。
可以被直接import语句导入的对象是以下类型:
- 模块文件(.py文件)
- C或C++扩展(已编译为共享库或DLL文件)
- 包(包含多个模块)
- 内建模块(使用C编写并已链接到Python解释器中)
1. 如果你写的不止给自己用,也给其他人用,那么设计成一个包更好