Python 程式設計

第 6 章    Python 模組

(1) Python模組

∗ 模組 (Module)

▸ 一個模組是一個檔案,內含 Python 程式的指令,可讓其他程式應用

▸ Python 標準函式庫 (Standard library) 內含許多模組

✶ 只要匯入模組,就可以使用在模組裡定義的函式或變數
✶ 例如,匯入 turtle 模組後,就可以使用 Screen()Turtle() 方法,這兩個都是在 turtle 模組裡定義的

∗ 如何得知 Python 有哪些模組可使用?

▸ 查閱官方網站:Python documentation

▸ 所有模組的索引:https://docs.python.org/3/py-modindex.html (以字母順序排列)

▸ 語法參考:https://docs.python.org/3/reference/index.html

▸ 官方教材:https://docs.python.org/3/tutorial/

(2) 模組的使用

∗ 模組是以資料物件 (Data object) 方式呈現

▸ 匯入模組後 ,就可以利用該模組名稱參考到模組物件 (Module object)

✶ 例如:匯入 import turtle 後即可使用該模組的物件 Turtle(), Screen(), 這和第 3 章所述「變數指向物件」的模式很像
importTurtle

▸ 我們利用「點」符號來使用模組裡的資料,此為物件導向的語法,例如使用 turtle 裡的 Turtle class 的語法為 turtle.Turtle(),正確的說法為:「在 turtle 模組中,取用名為 Turtle 的 Python 元素 (Python element)」

(3) 常用模組

∗ 數學模組 (Math module)

▸ 內含各種數學函式 (Math function) 與值 (Value)

✶ 文件參考:https://docs.python.org/3/library/math.html#module-math
importMath

▸ 範例:

ch6/mathExamples.py (首先建立 python/ch6 目錄)
import math

print(math.pi)
print(math.e)

print(math.sqrt(2))
print(math.sin(math.radians(90)))    # sin 90 度
3.141592653589793
2.718281828459045
1.4142135623730951
1.0

▸ 數學模組與一般模組使用方法的不同點:

✶ 例如 turtle 模組:我們需要先產生一個新的資料物件 (Data object),例如:
myTurtle = turtle.Turtle()
然後利用點號呼叫方法,例如:
myTurtle.forward(100)
# 產生新的 turtle 資料物件的正確說法為:「呼叫 Turtle class 的建構子 (Constructor) 來產生一個名為 myTurtleturtle 物件」
✶ 使用數學模組時,不需要建構一個新的物件,所有數學元素都已經建構在 math 模組上,因此直接使用即可得到函式值,例如:
x = math.sqrt(2)

∗ 隨機模組 (Random module)

▸ 許多的應用需要使用隨機數值 (或稱為亂數),例如:

✶ 擲骰子遊戲:從 1 到 6 之間隨機取一個數值
✶ 撲克牌遊戲:洗牌 (將牌序隨機打亂)
✶ 空戰遊戲:隨機挑選一個位置產生一架敵機對你開火
✶ 交通管制:隨機產生交通工具的行駛方向及速度來模擬交通狀況
✶ 電腦帳號:使用亂數將密碼加密

▸ 範例:

✶ 首先匯入隨機模組:import random
✶ 產生一個隨機實數 x, 0 ≤ x < 1
x = random.random()
✶ 產生一個隨機整數 x, a ≤ x ≤ b
a = 1
b = 10
x = random.randrange(a, b)    # 範圍:1 ~ 9
x = random.randint(a, b)      # 範圍:1 ~ 10
✶ 抽籤與隨機排列
nums = [i for i in range(1, 11)]    # 產生一組數字序列:[1, ..., 10]
num = random.choice(nums)           # 隨機抽一個數字
random.shuffle(nums)                # 隨機重排
✶ 註:[i for i in range(...)] 是一種非常簡潔的數字串列產生方式,在 for i in range(...) 之前加上 i 表示將每個迴圈變數 i 收集起來,然後在外面再加個串列符號就產生一個數字串列了
# 例如平方數串列:[i*i for i in range(10)]

上一章       下一章