MicroPython与CPython的区别¶
MicroPython实现了Python 3.4以及Python 3.5及以上版本的部分特性。以下各节描述了这些特性的当前状态。
对于MicroPython实现的Python特性,其行为有时与标准Python存在差异。以下各节列出的操作在与标准Python比较时在MicroPython中产生冲突的结果。
- 语法
- 核心语言
- f-strings 不支持与相邻文字的拼接,如果相邻文字包含大括号或是 f-strings
- f-strings 无法支持需要解析来解决不平衡嵌套大括号和方括号的表达式
- 不支持原始 f-strings
- f-strings don’t support !a conversions
- 用户定义类的特殊方法 __del__ 未实现
- 方法解析顺序(MRO)不符合 CPython
- Private Class Members name mangling is not implemented
- 从多个类继承时,super() 只调用一个类
- 在子类中调用 super() getter 属性将返回一个属性对象,而不是值
- 方法的错误消息可能显示意外的参数计数
- 函数对象没有
__module__
属性 - 不支持函数的用户定义属性
- 在不完全运行的生成器中,上下文管理器 __exit__() 不会被调用
- 局部变量不包括在 locals() 结果中
- 在 eval() 函数中运行的代码无法访问局部变量
- 在 MicroPython 的 __init__.py 中不支持 __all__。
- 在 MicroPython 中,包的 __path__ 属性具有不同的类型(单个字符串而不是字符串列表)
- MicroPython doesn’t support namespace packages split across filesystem.
- 内置类型
- 模块