MicroPythonとCPythonの違い¶
MicroPython は Python 3.4 と Pythpn 3.5 以上の一部の機能を実装しています。次の章では、これらの機能の現状について説明します。
MicroPython で実装されている Python の機能については、標準の Python と比較して、その挙動に違いがあることがあります。次の章に記載されている操作は、標準の Python と比べると、MicroPythonでは矛盾する結果となります。
- 構文
- コア言語
- f-string は、隣接するリテラルが中括弧を含むかf-stringである場合、隣接するリテラルとの連結をサポートしない。
- f-stringsは、バランスの悪い入れ子の中括弧や大括弧を解決するのに解析を必要とする式をサポートできない。
- raw 文字列と f-string の組み合わせは未サポート
- f-string は !r, !s, !a 変換をサポートしない
- 特殊メソッド __del__ はユーザ定義クラス用には未実装
- メソッド解決順序(MRO: Method Resolution Order)は Cpython に未準拠
- 多重継承では super() は1つのクラスを呼び出すだけ
- サブクラスでの super() ゲッター(getter)プロパティ呼出しは、値ではなくプロパティオブジェクトを返す
- メソッドのエラーメッセージは予期しない引数の数を表示する
- "関数オブジェクトは
__module__
属性を持たない - 関数のユーザ定義属性はサポートしていない
- コンテキストマネージャーの __exit__() は完了まで実行されないジェネレータでは呼び出されない
- ローカル変数は locals() の結果に含まれない
- eval() 関数で実行されるコードはローカル変数にアクセスできない
- __all__ は MicroPython の __init__.py では未サポート。
- パッケージの __path__ 属性は、MicroPython では異なるデータ型を持つ(文字列のリストではなく、単一の文字列)
- モジュールのロードに失敗してもロード済と登録される
- MicroPythonはファイルシステムをまたぐ名前空間パッケージには対応していない。
- 組込み型
- モジュール