專項練習 · 8 分鐘閱讀

Python 匯入練習:模組、別名與標準函式庫

匯入只是很小的語法,卻能帶來很大的收益:你可以直接使用經過測試的程式碼,而不是重新實現每個工具。關鍵是讓每個名字的來源清楚可見。

匯入模組,再使用命名空間

import math 會載入模組,並通過 math 物件暴露其中的名字。給函式加上模組名前綴,讀者就知道它來自哪裡,也不容易和自己的變數重名。

import math
print(math.sqrt(81))
print(math.pi)

模組命名空間

把一個名字帶入目前作用域

from statistics import mean 讓 mean 可以直接使用。名字含義明確時,這種寫法很簡潔。可以用逗號匯入多個名字,但列表要短到一眼能掃完。

from statistics import mean, median
scores = [7, 9, 10]
print(mean(scores))
print(median(scores))

有選擇的 from-import

別名要提升可讀性

別名不會複製或重命名磁碟上的模組,只是在目前檔案裡換一個存取名字。長模組名常用短別名,但不要用讓人費解的縮寫。

import random as rnd
rnd.seed(7)
print(rnd.choice(["latte", "tea", "mocha"]))

一個簡短別名

先探索標準函式庫

自己寫輔助函式之前,先確認標準函式庫是否已經提供。math 負責常見數學運算,statistics 負責統計摘要,re 負責文字模式。讀官方文件也是學習語言的一部分。

import math
print(math.gcd(12, 18))
print(math.factorial(5))

不必自己實現的實用函式

避免通配符匯入

from module import * 會隱藏名字來源,還可能悄悄覆蓋你已經使用的名字。優先使用 import module,或明確列出要匯入的名字。顯式匯入更容易搜尋、測試和解釋。

from math import ceil, floor
print(ceil(2.1))
print(floor(2.9))

顯式寫法更容易追蹤

你的練習清單

常見問題

import math 和 from math import sqrt 有什麼區別?

import math 會載入整個模組,呼叫時要寫 math.sqrt。from math import sqrt 會把 sqrt 帶入目前命名空間,可以直接呼叫 sqrt。

匯入會很慢嗎?

Python 會快取已經匯入的模組,後續匯入通常很快。大型第三方包在首次啟動時仍可能耗時。

應該使用 import * 嗎?

通常不要。它會隱藏名字來源,還可能覆蓋已有變數。顯式匯入更容易理解和維護。

練習匯入

12 道題,覆蓋模組、from-import、別名、math 和 statistics。

打開練習

繼續閱讀: