什么是 MicroPython ?它有哪些功能?
MicroPython 和 Python 都是一类 Python 的动态语言解释器。
若是在系统里安装了 Python 解释器,例如在 Windows 或者 Linux 命令行输入 python,进入 python 解释器的命令行模式即可输入运行查看效果。
>>> print('Hello World!')
Hello World!
动态语言通常指不需要编译即时运行的程序语言,如:Python、Lua、JavaScript、Shell,而静态语言则是需要编译后才能运行,常见于 C 、C++、Cs、JAVA 等。
解释器和编译器的不同表现的描述为:
- 解释器可以实时读取代码进行即时编译运行程序指令(常见于 .bat)
- 而编译器需要编译过后得到的可直接运行的软件再点击运行程序指令(常见于 .exe)
从这个角度来说,解释器也就是编译器编译出来的一种通用型动态代码执行环境的软件。
MicroPython 和 CPython 的区别
大多数时候,Python 的发展以 CPython 为主,以下列出一些与 CPython 的差异化信息。
-
MicroPython 和 CPython 在 Python3 语法上保持高度的一致性,常用的标准语法命令都已经支持。
-
MicroPython 虽然只实现了 CPython 的标准库和容器库的一些部分,常见容器库有同类功能,但不同名的模块,但大多算法类的 Python 逻辑代码是可以拿来即用的。
-
MicroPython 兼容实现的 CPython 的异常机制、没有实现元类(metaclass)机制,独立的 GC 机制。
-
在许当不同的硬件微芯片(最低在 nRF51)的移植上, MicroPython 代码接口缺乏一致性,呈现碎片化。
-
MicroPython 编译(mpy-corss)后得到的是 mpy ,而不是 CPython 的 pyc 文件。
-
MicroPython 在移植 CPython 代码时,经常缺少各种方法,所以要习惯寻找同类接口,而它们的使用方法除了看文档外就只能看源码。
-
MicroPython 作者是 dpgeorge ,要记住大佬。
MicroPython 带来了什么?
从开发者角度来讲,MicroPython 和 CPython 以及 PyPy 一样,都是 Python 代码的执行环境。
对于使用者(🐱)来说,调用通用的 Python 的逻辑代码,手握最大的源码宝库,并且在 Python 的世界里,一切都是开源的,但是 Python 调用外部的依赖库(dll、so、exe)等并不开源,只有执行的 Python 流程和方法,是你可以任意学习、理解、修改的源码。
动态语言中,最大的效果就是快速的适应程序的业务逻辑变化,减少大型程序的重复编译,通过接口供 Python 调用就是最大的特点,俗称的胶水语言因此而来,许多稳定的程序,可以提供外部接口交给 Python 反复调用确认效果,这就导致了动态语言最终多数用于测试环境和热更新程序领域。
一次编译,多次运行,是 Python 最大的好处,各举一个硬件和软件的例子。
-
在使用 HTTP 对接后端的时候,调试 API 接口,获取服务器的返回内容,通过 Python 可以做到随时变更 API 的参数重新发起请求,整个过程没有编译过程,只是更换参数执行函数,依次反复确认业务逻辑代码是否符合预期,类似自动化测试。
-
在控制硬件输出 PWM 的时候,例如调试音频设备或蜂鸣器,我们会需要经常变化参数来确认输出的波形或占空比,这时候,更换参数即可执行的 Python 就起到了快速开发的效果,对于一些需要大量调试和测试的开发。
以上例子都体现出一种效果,就是有许多需要大量测试才能确定的代码,使用 Python 进行开发会比 C 开发更具效率。
总结下来:
-
Python 拥有大量开放的源码,可以快速参考和查阅确认开发以及实施的时间和可能性。
-
Python 的业务逻辑开发效率优越,动态语言共同的特性,但随之牺牲的是性能。
在一些要求不是特别高的家用、民用、日常的场合,Python 会是你最好的帮手,就像过去的编程计算器一样,可以反复帮助你确认复杂计算式的正确性。
Python 语言开发特性
首先 Python 开发十分的快速,可以适应多种场合下的程序修改,实时热更新配置代码。
它拥有语法简洁、兼容大多数语言的特性、各种动态类型、自带大数库、大量开源示例代码、完整的 import 机制等等特性,这决定了它在不看重性能的场合里,用途特别明显,尤其是数据处理、算法验证、机器学习、编程学习、业务变更、升级程序等开发场合。
但是动态语言在关键操作上性能低下,所以通常我们会将关键部分逻辑迁移到 C 语言或更底层用于提速,再暴露给 Python 调用。
MicroPython 也和 Python 一样。
结语
想用一篇介绍我所知道的 Python 和 MicroPython ,但发现还是有些不足,如果有好的建议,欢迎留言。
- 撰写时间:2019年9月1日
- 作者名称:junhuanchen
- 联系方式:
- WeChat & Github: 作者名称
- QQ & E-mail: 作者名称@qq.com