1.導包其實就是在導包里的__init__文件以執行文件的sys.path為準(內部的導入是以頂級目錄作為開頭的,往後一層層找)1. 什麼是包 包就是一個包含有__init__.py文件的文件夾 包本質就是一種模塊,即包是用包導入使用的,包內部包含的文件也都是用來被導入使用 2 為何要用包 包是文件 ...
1.導包其實就是在導包里的__init__文件
以執行文件的sys.path為準(內部的導入是以頂級目錄作為開頭的,往後一層層找)
1. 什麼是包
包就是一個包含有__init__.py文件的文件夾
包本質就是一種模塊,即包是用包導入使用的,包內部包含的文件也都是用來被導入使用
2 為何要用包
包是文件夾,那文件夾就是用來組織文件的
# 註意:
# 在python2中,包下必須有一個__init__.py文件,而python3中即便是沒有也不會報錯
# 首次導入包,發送三件事,
# 1. 以包下的__init_.py文件為基準來產生一個名稱空間
# 2. 執行包下的__init_.py文件的代碼,將執行過程中產生的名字都丟到名稱空間中
# 3. 在當前執行文件中拿到一個名字p1,該p1就是指向__init__.py名稱空間的
# 總結包的使用無非註意三點:
# 1. 但凡是在導入語句中帶點的,點的左邊都必須是一個包
# 2. 導入包就是在導包下的__init__.py文件
# 3. 如果使用絕對導入,絕對導入的起始位置都是以包的頂級目錄為起始點
# 4. 但是包內部模塊的導入通常應該使用相對導入,用.代表當前所在的文件(而非執行文件),..代表上一級
# 強調:
# 1. 相對導入只能包內部的模塊之間互相導入使用
# 2. ..上一級不能超出頂級包
import sys
sys.path.append(r'D:\脫產三期視頻\day18\01 包的使用\dir1\dir2')
run.py為執行文件,m1,m2為p1里的文件。m3為p2里的文件
在pgk里的__init__文件使用直接和間接方法導入m1_fn和m2_fn方法
在同層目錄下,使用絕對導入和相對導入m1_fn方法