2.18. 使用模組¶
一個 模組 是一組打包好的 Python 程式碼 -- 函式、類別、常數 -- 以便能在許多指令碼之間重複使用。Python 隨附了一整套滿是模組的標準函式庫,而 OpenMV 韌體又新增了更多用來與相機溝通的模組。要取用某個模組,是透過 import 來完成的。
2.18.1. import¶
最直接的形式是以模組自己的名稱把整個模組引入:
import math
print(math.sqrt(2))
輸出::
1.4142135623730951
在 import 之後,由 math 所定義的每個名稱都可透過 math.<name> 來取得。模組名稱來自它的檔名(不含 .py);命名空間前綴可避免兩個有相同函式名稱的模組互相衝突。
2.18.2. from ... import¶
若要把特定名稱直接拉進目前的作用域,請使用 from:
from math import sqrt, pi
print(sqrt(2), pi)
輸出::
1.4142135623730951 3.141592653589793
現在不再有命名空間前綴了。這對於常用的名稱很方便,但一個引入許多名稱的 from import 會讓人更難分辨每個名稱是從哪裡來的。在較大的指令碼中,單純的 import math 通常更清楚。
星號形式 from math import * 會引入模組匯出的 所有東西。請略過它 -- 它會汙染命名空間,並讓 IDE 的自動完成失靈。
2.18.3. 用 as 取別名¶
冗長的模組名稱可以用 as 縮短:
import json as j
j.dumps({"ok": True})
同樣的技巧也適用於以 from 引入的個別名稱:
from math import sqrt as root
root(9) # 3.0
對於一般的 Python 程式碼,只在原始名稱真的很長、或與作用域中既有的某個東西衝突時,才取別名。
2.18.4. 可用的模組¶
函式庫參考 列出了相機上隨附的每個模組 -- 包括 MicroPython 標準函式庫,以及驅動影像感測器、執行機器視覺、控制板載硬體的 OpenMV 專屬模組。它們全都使用上面所示的同一套 import 機制。