看過好幾遍了,每次都記不住。好記性不如爛筆頭,這次學了好好記一下
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. 如果你寫的不止給自己用,也給其他人用,那么設計成一個包更好