module 模組
Python 大受歡迎,一部份原因是社群熱心的開發者開發了許多的函式供人們使用,因為有社群的貢獻,我們才能省去「重新造輪子」耗費的心力與時間。
例如,我們如果想要挑選出幾個數字中最大的,我們可以透過
max() 函式取得最大數
iMax = max(1, 5, 11, 34, 69, 78)
print(iMax)
# 結果會顯示: 78
max() 就是
Python 提供的「
內建函式」。
除了內建函式外,在安裝
Python 時,也附帶安裝了許多「
標準函式庫」,稱為
module(模組),包括了:
datetime、
math、
string、...更多有關標準函式庫的資訊可以參考
docs.python.org/3/library/。
當我們要使用某個模組的函式(包括 標準函式庫) 時,首先要
import(引入) 該模組。例如與數學計算相關的模組
math
# import 可以在程式的任何地方引入, 只要在呼叫函式前引入即可
# 不過通常普遍在程式一開始就引入需要的模組
import math
# 呼叫函式, 前面必須有模組的名字
# 計算 小於 並且 最接近 3.4 的整數
print(math.floor(3.4)) # floor 是地板的意思
# 結果會顯示: 3
# 計算 大於 並且 最接近 3.4 的整數
print(math.ceil(3.4)) # ceil 是 ceiling(天花板的縮寫)
# 結果會顯示: 4
您也可以採用第 2 種
import 方式
# 只引入需要的函式
from math import floor, ceil
# 函式的前面不須有模組的名字
print(floor(3.4))
print(ceil(3.4))
要如何知道模組有提供哪些函式呢?
1. 上模組的官方網站查
2. 透過
Python 互動模式 的
help() 功能
# 進入互動模式, 並引入 math 模組
# 再以 help() 查詢
>>> import math
>>> help(math)
Help on module math:
NAME
math
DESCRIPTION
This module is always available. It provides access to the
mathematical functions defined by the C standard.
FUNCTIONS
acos(x, /)
Return the arc cosine (measured in radians) of x.
acosh(x, /)
Return the inverse hyperbolic cosine of x.
asin(x, /)
Return the arc sine (measured in radians) of x.
asinh(x, /)
Return the inverse hyperbolic sine of x.
atan(x, /)
Return the arc tangent (measured in radians) of x.
atan2(y, x, /)
Return the arc tangent (measured in radians) of y/x.
Unlike atan(y/x), the signs of both x and y are considered.
-- More --
看到最底下有
-- More -- ,按一下
空白鍵,就會繼續顯示後續的函式,或 按
CTRL + C 中斷不再看後面的說明。
另一個指令是
dir()
# dir() 會列出模組內的函式
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos',
'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign',
'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs',
'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot',
'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log',
'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder',
'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
當引入的模組愈來愈多時,有可能會發生引入的 A 模組 和 B 模組都含有同名的函式
為了避免這樣的情況,就明確的加上模組名稱
但如果模組名稱又很長,可以給模組一個
別名
import modulea as ma
import moduleb as mb
ma.func()
mb.func()
pip 套件管理工具
除了 內建函式 及 標準函式庫,我們還可以經由網路取得廣大的
Python 社群熱心開發者貢獻的模組,也稱為「
套件」。
pypi.org 是最大的
Python 套件網站,網址是
pypi.org,這裡都是開發者主動上傳的套件,每個套件就是一個專案,都是開放原始碼;您也可以藉由下載別人的專案觀摹學習高手寫的程式。
您可以直接輸入您要尋找的套件名稱,或是點擊
browse projects ,慢慢瀏覽、"尋寶" ;-)
pypi.org 有將套件做分類
pip 則是最普遍採用的套件管理工具
採用
pip 的好處是,它會自動下載相容您的
Python 版本的套件,並解決「
相依性」;例如:我們想安裝的是 A 套件,而 A 套件也引用的 B, C 套件,當我們以
pip 安裝 A 套件時,會自動幫我們安裝 B, C 套件。
pip 在我們安裝
Python 時也一併安裝了,所以現在我們可以直接使用。
開啟「
命令提示字元」
pip 指令說明簡述如下:
# 安裝套件
C:\> pip install 套件名
# 升級 / 更新套件
C:\> pip install --upgrade 套件名
或
C:\> pip install -U 套件名
# pip 也可以自我升級 / 更新
C:\> pip install -U pip
# 但 Windows 的 pip upgrade 略有不同
C:\> python -m pip install -upgrade pip
# 移除套件
C:\> pip uninstall 套件名
# 列出目前安裝的套件
C:\> pip list
# 尋找套件, pip 會列出與關鍵字有關的套件
C:\> pip search 關鍵字
# 凍結 並 列出目前安裝的套件及其版本
C:\> pip freeze
# 輔助說明
C:\> pip help
這裡要稍微說明
freeze 的不同處,我們可能安裝的某些套件有版本上的相依性,比方說:套件 A 一定得搭配 1.6 版的套件 B,
freeze 可以將目前的環境「
凍結」,並將已安裝的套件及版本記錄並儲存下來,稱為「
需求檔(requirements file)」。
等到有天,電腦要重新安裝
Python 時,就可以快速把之以前的套件一次都裝回來
# 將目前安裝的套件記錄並存於 requirement.txt
C:\> pip freeze > requirement.txt
# 將列在需求檔內的套件一次安裝
C:\> pip install -r requirement.txt