Python 自學第七天:Module 模組
也就是使用其他 .py
檔案中,預先定義好的變數和函式。使用模組的好處就是,別人寫過或自己定義過的變數和函式可以直接拿來使用。
Python 有一些內建好的模組,可以直接拿來使用,如:與作業系統相關的 os
、與命令行相關的 sys
、與數學相關的 math
、random
、statistics
等,可以參考 Python 標準函式庫概覽。也有其他人寫好的模組,可以從網路上下載來使用。也可以自己定義模組。
模組的引入和使用
「全部」的變數和函式
引入
使用模組前要先告知 Python 主程式,即將引入哪些模組,引入方法如下:
1 | # 語法一: |
*:表示該模組中所有的變數和函式。
別名:可以幫很長不好記憶的模組自訂名稱。
使用
1 | 模組名.變數名 |
「特定」的變數和函式
引入
但是每次將整個模組的變數和函式引入,會有造成程式運行效能降低的可能性。因此,還可以針對模組中的特定變數和函式來引入:
1 | from 模組名 import 變數名 |
使用
不需要在變數和函式前面加 模組名.
或 別名.
。
1 | 變數名 |
因為簡化了呼叫變數和函式的方式,小心模組中的變數名、函式名和 Python 內建的變數名、函式名重疊。
Python 內建的模組
以下列出一些常用的模組中的函式。
與作業系統相關的 os
模組
getcwd()
:回傳目前的工作目錄。
1 | import os |
也可以寫成如下:
1 | from os import getcwd |
更多請參考:Python 文件 os 模組
與命令行相關的 sys
模組
prefix
:Python 安裝位置路徑的前綴。path
:路徑 List,用來搜尋模組所在位置。path[0]
是主程式所在的目錄。其餘元素是 Python 內建模組的所在位置,為prefix/lib/python_version
。version
:Python 直譯器的版本號和其他訊息。
1 | from sys import prefix, path, version |
更多請參考:Python 文件 sys 模組
與基本運算相關的 math
模組
fabs(a)
:取絕對值。log10(a)
:以 10 為底取對數。
1 | from math import fabs, log10 |
更多請參考:Python 文件 math 模組
與隨機選擇相關的 random
模組
choice(seq)
:從 sequence 資料中,隨機選取一個元素。sequence 是可以疊代的資料類型,有字串、List、Tuple 等。sample(seq, n)
:從 sequence 資料中,隨機選取 n 個元素。回傳 List 資料。
1 | from random import choice, sample |
shuffle(list)
:將可變動的 sequence 資料 (也就是 List) 中的元素,隨機調換位置。如果想要調換不可變動的 sequence 資料中的元素,只能利用sample(seq, n=len(seq))
回傳一個新的 List。
1 | from random import sample, shuffle |
random()
:不需要傳入任何參數,隨機取得 0.0~1.0(不包含) 之間的浮點數 N。uniform(a, b)
:隨機取得介在 a 和 b 之間的浮點數 N。會不會包含 b 則以公式a + (b-a) * random()
來決定。
1 | from random import random, uniform |
randint(a, b)
:隨機取得介在 a 和 b(包含) 之間的整數 N。randrange(a, b[, step])
:隨機取得介在 a 和 b(不包含) 之間的整數 N。可以指定數字間隔。
1 | from random import randint, randrange |
更多請參考:Python 文件 random 模組
與統計相關的 statistics
模組
下列函式中,data 要是 sequence 或可疊代的資料。
mean(data)
:計算 data 的平均數。median(data)
:計算 data 的中位數。mode(data)
:取出現最多次的元素。stdev(data)
:計算 data 的樣本標準差。
1 | from statistics import mean, median, mode, stdev |
更多請參考:Python 文件 statistics 模組
自定義模組
定義模組很簡單,就是直接建立一個 .py
檔案,裡面放置自訂的變數或函式即可。
1 | # ../my_math.py |
依照主程式和模組放置位置,需要執行不同的動作才能引入:
「同層」目錄結構
1 | Python_beginning |
不需要格外的動作,可以直接在主程式 main.py
中引入。
1 | # ../main.py |
因為如上述提過的 Python 內建 sys 模組中的 path 變數:路徑 List,用來搜尋模組所在位置。path[0]
是主程式 main.py
所在的資料夾,也就是 ../Python_beginning
。因此可以直接找到 my_math
模組。
模組在「資料夾」中,屬於下一層
1 | Python_beginning |
當我直接引入 my_math.py
模組,會報錯:
1 | import my_math |
因為在 sys.path[0]
的位置,也就是 ../Python_beginning
資料夾,找不到 my_math
模組。
需要在 import my_math
之前,自己增加路徑位置,動作如下:
1 | import sys |
append():在可變動 List 資料尾端,新增一個元素。
使用他人建置的模組
pip
是 Python 的模組 package 管理工具,提供了對模組 package 的查詢、下載、安裝和卸載的功能。
如果你的 Python 是從官網上面下載,就包含了 pip
工具。如果尚未安裝 pip
工具,請參考下方。
安裝 pip
在 pip 官網中,可以看到安裝的方法。
- 獲得安裝 pip 的檔案。可以使用終端機
cd
進入某個資料夾,用下方指令碼下載;或是去這裏將整個頁面存在一個.py
的檔案中。
1 | $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 先下載安裝 pip 的檔案 |
curl:抓取網頁到一個檔案中。
-o:必須輸入檔案名,將網頁內容下載到該檔案中。
因為 pip 會自動被安裝在 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages
路徑中,因此 get-pip.py
檔案儲存在哪裡都無所謂。
- 使用終端機
cd
進入get-pip.py
所在資料夾,執行安裝 pip 的檔案。
1 | $ sudo python3 get-pip.py # 執行安裝 pip 的檔案 |
使用 pip 安裝模組
有了 pip
工具後,使用它安裝他人建置的模組。
1 | $ pip install 模組名 |
參考資料:
彭彭的課程:Python Module 模組的載入與使用