模組分爲標準庫模組和使用者自定義模組。
Python標準庫提供了操作系統功能、網路通訊、文字處理、檔案處理、數學運算等基本的功能。比如:random(亂數)、math(數學運算)、time(時間處理)、file(檔案處理)、os(操作系統互動)、sys(和直譯器互動)等。
import語句的基本語法格式如下:
import 模組名 # 匯入一個模組
import 模組1,模組2… # 匯入多個模組
import 模組名 as 模組別名 # 匯入模組並使用新名字
import載入的模組分爲四個通用類別:
a. 使用python編寫的程式碼
b. 已被編譯爲共用庫或DLI的C或C++擴充套件
c. 包好一組模組的包
d. 使用C編寫並鏈接到python直譯器的內建模組
import本質上是使用了__import__內建函數。
from…import語句的基本語法格式如下:
from 模組名 import 成員1,成員2,…
from 模組名 import * # 匯入這個模組中的所有成員
**注意:**應儘量避免第二種寫法,因爲可能會覆蓋掉自己定義的名字。
import語句本質上就是呼叫內建函數__import__(),我們可以通過它實現動態匯入。給__import__()動態傳遞不同的參數,就能匯入不同的模組。
s = "math"
m = __import__(s)
print(m.pi)
**注意:**一般不建議使用__import__()匯入,其行爲在python2和python3中有差異,會導致意外錯誤。如果需要動態匯入可以使用importlib模組。
import importlib
a = importlib.import_module("math")
print(a.pi)
一個模組無論匯入多少次,這個模組在整個直譯器進程內有且僅有一個範例物件。
如果想多次呼叫,使用動態呼叫importlib模組中的reload函數。
將功能類似的模組放到一起,形成了包。包就是一個必須有__init__.py的資料夾。包下面 下麪可以包含模組,也可以包含子包。
若要匯入module_AA.py。方式如下:
import a.aa.module_AA # 在使用時,必須加完整名稱來參照即a.aa.module_AA.fun_AA()
from a.aa import module_AA # 在使用時,直接使用模組名即module_AA.fun_AA()
from a.aa.module_AA import fun_AA # 直接匯入函數
匯入包的本質其實是「匯入了包的、__init__.py」檔案。
__init__.py的三個核心作用:
如果是子包內的參照,可以按相對位置引入子模組
from .. import module_A # ..表示上級目錄 .表示同級目錄
from . import module_A2
當匯入某個某塊檔案時,Python直譯器一般是按照下述順序進行尋找。
步驟如下:
from ditutils.core import setup
setup(
name = 'wyxMath' #對外模組的名字
version = '1.0' #版本號
description = '這是第一個對外發布的模組,測試用' #描述
author = 'wyx' #作者
author_email = '[email protected]'
py_modules = ['wxyMath.demo1','wyxMath.demo2'] # 要發佈的模組
)
在cmd命令列模式下操作,進setup.py所在目錄,鍵入命令:
python setup.py install