定義
模塊:用來從邏輯上組織Python代碼(變量、函數、類、邏輯)去實現一個功能。本質就是.py結尾的Python文件。
包:用來從邏輯上組織模塊的(可以放一堆模塊在目錄下)。本質就是一個目錄(必須帶有一個__init__.py文件)。
導入模塊
導入單個:
import 模塊名
導入多個:
import 模塊名1,模塊名2
導入模塊中所有代碼:
from 模塊名 import *
import導入於from 模塊名 import *導入在調用上的區別:
module.function() function()
跨目錄導入包:
import sys print(sys.path) #python會去哪些目錄下找模塊,是一個列表 Module_Dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #獲取到模塊目錄 sys.path.append(Module_Dir)#把模塊目錄加到sys.path列表中 import 要導入的模塊
代碼說明
module_test.py
def Index(): print("Welcome to Index Page.")
main.py
# import module_test
from module_test import * #這種是把模塊中的代碼復制到了這個py腳本中
from module_test import Index as Index_module #如果導入的模塊中函數與該py腳本中的函數名一樣,使用as別名
def Index():
print("Main Page")
# module_test.Index() #這樣調用是不行的
Index()
Index_module()
輸出結果如下:
import本質
就是把Python文件解釋一遍。
比如我們導入requests模塊,requests = requests模塊中的所有代碼,所以調用的時候需要requests.function()。
import requests
而使用from導入的時候,是把模塊中的代碼復制到了這個py腳本中,所以調用的時候直接使用函數。
導入包
導入包的本質是去執行包下的__init__.py文件。
import packagename
如果調用包中的模塊呢?
因為本質是讀取__init__.py文件,因此在__init__.py文件寫要導入的模塊(相對導入)。
from . import 模塊名
調用的話就是
packagename.模塊名.function()
代碼演示
__init__.py:
print("in the package")
main.py:
import package
運行效果:
導入優化
import導入:使用多次模塊中的函數的話,會重復找路徑的動作,效率會低,因此可以使用from方法導入來優化腳本效率。
module.function()
模塊的分類
- 標准庫(也叫內置模塊)
- 開源模塊(也叫第三方模塊)
- 自定義模塊