module 模組



Python 大受歡迎,一部份原因是社群熱心的開發者開發了許多的函式供人們使用,因為有社群的貢獻,我們才能省去「重新造輪子」耗費的心力與時間。

例如,我們如果想要挑選出幾個數字中最大的,我們可以透過 max() 函式取得最大數
 
iMax = max(1, 5, 11, 34, 69, 78)
print(iMax)

# 結果會顯示: 78
 
max() 就是 Python 提供的「內建函式」。

除了內建函式外,在安裝 Python 時,也附帶安裝了許多「標準函式庫」,稱為 module(模組),包括了:datetimemathstring、...更多有關標準函式庫的資訊可以參考 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
 






⇑ 目錄 ⇑