目錄python
包是模塊的一種形式,包的本質就是一個含有.py
的文件的文件夾設計
模塊的第一個版本只有10個功能,可是將來在擴展版本的時候,模塊名和用法應該最好不要去修改,可是這只是對使用者友好,而因爲版本擴展,文件愈來愈大,模塊的設計者對模塊的管理、維護會愈來愈複雜,所以咱們能夠是哦那個包來擴展模塊的功能。code
導入模塊時發生的三件事情:blog
導入包發生的三件事情:it
導入包就是在導入包下的.py
文件,而且可使用下面的倆種方式導入。class
以下咱們若是須要擴展aaa.py模塊,須要創建一個aaa的目錄文件,而且刪除aaa.py文件,將aaa.py修改爲m1.py和m2.py兩個文件,讓模塊的功能使用方法不改變。import
因爲在__init__.py
中定義了func1,所以咱們能夠在run.py文件中導入func1,可是這個func1並非咱們想要的func1,所以須要修改__init__.py
文件,又因爲執行文件run.py的環境變量不爲aaa,所以直接使用import導入m1會報錯,所以使用from導入。變量
from aaa.m1 import func1 from aaa.m2 import func2
aaa.bbb指向aaa內部的文件夾bbb包,若是咱們須要導入bbb這個包。擴展
# bbb/.py from aaa import bbb # run.py import aaa print(aaa.bbb)
若是bbb包內部有m3.py,咱們須要從run.py導入m3模塊。語法
# bbb/.py from aaa.bbb import m3 # run.py import aaa aaa.bbb.m3
絕對導入:
# aaa/.py from aaa.m1 import func1 from aaa.m2 import func2
相對導入:
from .m1 import func1 from .m2 import func2
import aaa.bbb.m3.f3
錯誤