【雕爷学编程】MicroPython手册之内置模块 sys:与系统相关的函数和变量

本文介绍了MicroPython,一种专为嵌入式系统设计的Python版本,强调其小体积、高效执行和硬件控制能力。重点讲解了sys模块的功能,包括系统信息获取、命令行参数处理和程序控制,以及在物联网和智能硬件开发中的应用场景和注意事项。
摘要由CSDN通过智能技术生成

在这里插入图片描述

MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

总体来说,MicroPython让Python进入了微控制器领域,是一项重要的创新,既降低了编程门槛,又提供了良好的硬件控制能力。非常适合各类物联网和智能硬件的开发。

在这里插入图片描述

MicroPython的内置模块sys是一个用于提供系统特定的变量和函数的模块,它可以用来访问和操作与解释器相关的信息和功能。它的主要特点是:

它可以使用exit()方法终止当前程序,并指定一个退出码。
它可以使用atexit()方法注册一个在程序终止时调用的函数。
它可以使用print_exception()方法打印异常和回溯信息到一个类似文件的对象。
它可以使用settrace()方法启用字节码执行的跟踪。
它可以使用argv变量获取当前程序启动时的参数列表。
它可以使用byteorder变量获取系统的字节顺序(“little"或"big”)。
它可以使用implementation变量获取有关当前Python实现的信息,如名称,版本,机器等。
它可以使用maxsize变量获取本机整数类型或MicroPython整数类型能够表示的最大值。
它可以使用modules变量获取已加载模块的字典。
它可以使用path变量获取用于搜索导入模块的可变目录列表。
它可以使用platform变量获取MicroPython运行的平台,如操作系统或板子的标识符。
它可以使用stderr, stdin, stdout变量获取标准错误,输入,输出流对象。
它可以使用version变量获取此实现符合的Python语言版本,作为字符串。
它可以使用version_info变量获取此实现符合的Python语言版本,作为整数元组。

sys模块的应用场景有:

1、用于管理和优化程序的运行和性能,例如终止程序,注册终止函数,打印异常信息等。
2、用于实现一些特定的功能或效果,例如跟踪字节码执行,处理命令行参数,切换标准流等。
3、用于学习或教授一些系统相关的知识或技能,例如字节序,实现信息,平台区分等。

sys模块的注意事项有:

1、sys模块实现了CPython模块的一个子集,并且在一些情况下提供了一些特定于MicroPython的扩展,因此不能完全兼容CPython的功能和性能。
2、sys模块依赖于特定板子上的硬件特性和资源,不同的MicroPython板子可能有不同的可用功能和参数范围,需要查看具体的文档来确定支持的功能和使用方法。
3、sys模块提供了对解释器相关的变量和函数的访问和控制,使用不当可能会导致程序错误,崩溃或无法运行。使用时需要谨慎并遵循相关的规范和指南。

以下是MicroPython的内置模块sys几个实际运用程序案例:

案例一:使用sys.exit()方法终止程序

# 导入sys模块
import sys

# 打印一条消息
print('This is a test program.')

# 调用sys.exit()方法,并指定退出码为1
sys.exit(1)

# 这条语句不会执行
print('This will not be printed.')

案例二:使用sys.argv变量处理命令行参数

# 导入sys模块
import sys

# 打印参数个数
print('Number of arguments:', len(sys.argv))

# 打印参数列表
print('Arguments:', sys.argv)

# 遍历每个参数
for i, arg in enumerate(sys.argv):
    # 打印参数索引和值
    print('Argument', i, ':', arg)

案例三:使用sys.platform变量区分不同的平台

# 导入sys模块
import sys

# 获取平台标识符
platform = sys.platform

# 根据不同的平台执行不同的操作
if platform == 'linux':
    # 如果是Linux系统,打印一条消息
    print('Running on Linux.')
elif platform == 'pyboard':
    # 如果是Pyboard板子,导入pyb模块并闪烁LED
    import pyb
    led = pyb.LED(1)
    led.toggle()
else:
    # 如果是其他平台,抛出一个异常
    raise Exception('Unknown platform.')

案例四:获取命令行参数:

import sys

# 获取命令行参数列表
args = sys.argv

# 打印命令行参数
print("Command line arguments:", args)

在这个示例中,我们使用sys模块获取命令行参数。sys.argv是一个包含命令行参数的列表,其中第一个元素是脚本名称,后续元素是传递给脚本的参数。我们可以使用sys.argv来访问和处理命令行参数。在这里,我们打印出命令行参数列表。

案例五:强制退出程序:

import sys

# 模拟程序发生错误
error_occurred = True

# 如果发生错误,退出程序
if error_occurred:
    print("An error occurred. Exiting...")
    sys.exit(1)

# 程序正常执行的代码
print("Program continues...")

在这个示例中,我们使用sys模块的exit()函数来强制退出程序。在这里,我们模拟程序发生错误的情况。如果error_occurred变量为True,则打印错误消息并调用sys.exit(1)来退出程序。退出函数的参数可以指定退出状态码,通常非零状态码表示程序异常退出。如果没有发生错误,程序将继续执行后续代码。

案例六:获取Python解释器的版本信息:

import sys

# 获取Python解释器的版本信息
version_info = sys.version_info
print("Python version:", sys.version)
print("Python version info:", version_info)

在这个示例中,我们使用sys模块获取Python解释器的版本信息。sys.version返回一个字符串,表示Python解释器的版本号。sys.version_info是一个命名元组,包含了Python解释器的版本信息的详细分量。在这里,我们打印出Python解释器的版本号和版本信息。这些实际运用程序案例展示了使用MicroPython内置模块sys的功能。通过使用sys模块,可以获取命令行参数,强制退出程序,以及获取Python解释器的版本信息等。这些功能在处理命令行输入、错误处理和版本控制等场景中非常有用。

案例七:获取命令行参数

import sys

# 获取命令行参数
args = sys.argv

# 打印命令行参数
print("命令行参数:", args)

在这个例子中,我们使用 sys.argv 来获取命令行参数。sys.argv 是一个包含命令行参数的列表,其中第一个元素是脚本的名称,后续元素是传递给脚本的参数。我们将命令行参数打印出来。

案例八:终止程序的执行

import sys

# 发生错误时终止程序
def error_func():
    print("发生错误,程序终止")
    sys.exit(1)

# 调用错误函数
error_func()

# 程序继续执行,但不会执行到这里
print("这行代码不会被执行")

在这个例子中,我们使用 sys.exit() 函数终止程序的执行。在 error_func() 函数中,我们打印一个错误消息,并调用 sys.exit(1) 来终止程序的执行,并指定退出码为 1。当 sys.exit() 被调用时,程序将立即停止执行,并返回到操作系统。

案例九:获取解释器的版本信息

import sys

# 获取解释器的版本信息
version_info = sys.implementation.version

# 打印解释器的版本信息
print("解释器版本:", version_info)

在这个例子中,我们使用 sys.implementation.version 获取解释器的版本信息。version_info 是一个包含主要版本号、次要版本号和微版本号的元组。我们将解释器的版本信息打印出来。

这些示例展示了 sys 模块在 MicroPython 中的实际应用。你可以根据自己的需求进行修改和扩展。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值