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 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 机制。