-
MicroPython 提供内置模块,可反映 Python 标准库的功能(例如os, time),以及MicroPython 特定的模块 (例如bluetooth,machine)。
-
大多数 Python 标准库模块都实现了等效 Python 模块的功能子集,并在少数情况下提供了一些 MicroPython 特定的扩展(例如array,os)
-
由于资源限制或其他限制,某些端口或固件版本可能不包含此处记录的所有功能。
-
为了实现可扩展性,一些内置模块可以 从加载到设备文件系统上的Python 代码进行扩展。
本章介绍 MicroPython 内置的模块(函数和类库)。本文档通常旨在描述 MicroPython 项目中实现的所有模块和函数/类。但是,MicroPython 具有高度可配置性,并且每个移植到特定板/嵌入式系统可能仅包含可用 MicroPython 库的子集。
考虑到这一点,请注意,本文档中描述的模块(甚至整个模块)中的某些函数/类可能 在特定系统上的特定 MicroPython 版本中不可用。查找特定功能可用性/不可用性的一般信息的最佳位置是“一般信息”部分,其中包含与特定MicroPython 端口相关的信息。
在某些端口上,您可以通过在 REPL 输入以下内容来发现可用的内置库:
help('modules')
除了本文档中描述的内置库之外,还可以在micropython-lib中找到更多来自 Python 标准库的模块以及对它的进一步 MicroPython 扩展。
Python 标准库和微库
以下标准 Python 库已“微化”,以符合 MicroPython 的理念。它们提供该模块的核心功能,旨在成为标准 Python 库的直接替代品。
- array– 数值数据数组
- asyncio— 异步 I/O 调度程序
- binascii– 二进制/ASCII 转换
- builtins– 内置函数和异常
- cmath– 复数的数学函数
- collections– 收集和容器类型
- errno– 系统错误代码
- gc– 控制垃圾收集器
- gzip– gzip 压缩和解压缩
- hashlib– 散列算法
- heapq– 堆队列算法
- io– 输入/输出流
- json– JSON 编码和解码
- math– 数学函数
- os– 基本“操作系统”服务
- platform– 访问底层平台的识别数据
- random– 生成随机数
- re– 简单的正则表达式
- select– 等待一组流上的事件
- socket– 插座模块
- ssl– SSL/TLS 模块
- struct– 打包和解包原始数据类型
- sys– 系统特定功能
- time– 与时间相关的函数
- zlib– zlib 压缩和解压缩
- _thread– 多线程支持
MicroPython 特定库
以下库中提供了特定于 MicroPython 实现的功能。
以下库为硬件组件提供驱动程序。
特定于移植的库
在某些情况下,以下特定于端口/板的库具有与machine库中类似的函数或类。在这种情况下,特定于端口的库中的条目会公开该平台独有的硬件功能。
要编写可移植代码,请使用模块中的函数和类machine。要访问特定于平台的硬件,请使用适当的库,例如 pybPyboard。
pyboard 专用库
以下库特定于 pyboard。
WiPy 特有的库¶
以下库和类特定于 WiPy。
ESP8266 和 ESP32 专用库
以下库特定于 ESP8266 和 ESP32。
RP2040 专用库
以下库特定于 RP2040,如在 Raspberry Pi Pico 中使用。
Zephyr 专用库
以下库特定于 Zephyr 端口。
扩展 Python 的内置库
通过在文件系统中提供同名模块,Python 代码能够扩展内置模块的子集。此扩展性适用于固件内置的以下 Python 标准库模块:,,,,,,,,,,,,,,,,,,,,,,,, 以及MicroPython特定模块。array
所有其他内置模块都无法 从文件系统扩展。binascii
collections
errno
gzip
hashlib
heapq
io
json
os
platform
random
re
select
socket
ssl
struct
time
zlib
machine
这允许用户提供内置库的扩展实现(可能提供额外的 CPython 兼容性或缺失的功能)。这在micropython-lib中被广泛使用,有关更多信息,请参阅包管理。文件系统模块通常会对内置模块进行通配符导入,以便从内置模块继承所有全局变量(类、函数和变量)。
在 MicroPython v1.21.0 及更高版本中,为了防止文件系统模块导入自身,它可以通过在导入期间临时清除来强制导入内置模块sys.path
。例如,要从 time
Python 扩展模块,文件系统上命名的文件time.py
将执行以下操作:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
结果是time.py
包含内置time
模块的所有全局变量,但添加了extra_method
。
u
在早期版本的 MicroPython 中,您可以通过在名称开头附加 来强制导入内置模块。例如, 而不是。例如,在文件系统上可能看起来像:import utime
import time
time.py
from utime import *
def extra_method():
pass
这种方式仍然受支持,但sys.path
现在首选上述方法,因为u
在 MicroPython 的未来版本中,-prefix 将从内置模块的名称中删除。
除非特别需要强制使用内置模块,否则代码应该始终使用 而不是。import module
import umodule