このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

Python 3.8

Python 3.8.0 (final) は 2019年10月14日にリリースされました。3.8 の機能は PEP 569 で定義されており、変更点の詳しい説明は What's New in Python 3.8. にあります

機能

状態

PEP 570

位置専用引数

PEP 572

代入式

完了

PEP 574

帯域外データに対応した pickle プロトコル 5

PEP 578

実行時の監査フック

PEP 587

Python の初期化の設定

PEP 590

Vectorcall: CPython 向けの高速な呼び出しプロトコル

その他

f-string が、式の自己文書化とデバッグのための = をサポートしました

完了

その他の言語の変更:

実装上の問題により、 finally 節の中では continue 文が使えませんでした。Python 3.8 でこの制限がなくなりました

完了

bool 、 int 、 fractions.Fraction の各型が、 float や decimal.Decimal にあるような as_integer_ratio() メソッドを持つようになりました

int 、 float 、 complex のコンストラクタは、対応するメソッド __int__() 、 __float__() 、 __complex__() が利用できず、 __index__() 特殊メソッドが利用できる場合には、そちらを使うようになりました

正規表現で N{name} エスケープのサポートが追加されました

dict と dictview が、 reversed() を使って挿入順の逆順に反復できるようになりました

関数呼び出しでのキーワード名に許される構文がさらに制限されました。特に f((keyword)=arg) は許されなくなりました

yield 文と return 文における一般化されたイテラブルのアンパックで、括弧が不要になりました

[(10, 20) (30, 40)] のようなコードでカンマが抜けている場合、コンパイラが役に立つ提案とともに SyntaxWarning を表示するようになりました

datetime.date や datetime.datetime のサブクラスと datetime.timedelta オブジェクトとの算術演算は、基底クラスではなくサブクラスのインスタンスを返すようになりました

Python インタプリタが Ctrl-C (SIGINT) で中断され、その結果生じた KeyboardInterrupt 例外が捕捉されなかった場合、Python プロセスは SIGINT シグナルで、あるいは呼び出し元のプロセスが Ctrl-C による終了だと判別できる正しい終了コードで終了するようになりました

高度なプログラミングのスタイルの中には、既存の関数の types.CodeType オブジェクトを更新する必要があるものがあります

整数について、底が法と互いに素である場合には、3引数形式の pow() 関数で指数に負の値を指定できるようになりました

辞書内包表記が辞書リテラルと揃えられ、キーが先に、値が後に評価されるようになりました

object.__reduce__() メソッドが、要素数2から6のタプルを返せるようになりました

組み込みモジュールの変更:

asyncio

asyncio.run() が暫定版から安定版の API になりました

完了

python -m asyncio を実行すると、ネイティブに非同期な REPL が起動します

例外 asyncio.CancelledError は Exception ではなく BaseException を継承するようになり、 concurrent.futures.CancelledError を継承しなくなりました

完了

asyncio.Task がラップしているコルーチンを取得する asyncio.Task.get_coro() が追加されました

asyncio のタスクに名前を付けられるようになりました。 asyncio.create_task() かイベントループの create_task() メソッドに name キーワード引数を渡すか、タスクオブジェクトの set_name() メソッドを呼び出します

asyncio.loop.create_connection() に Happy Eyeballs のサポートが追加されました。動作を指定するために、 happy_eyeballs_delay と interleave という2つの新しいパラメータが追加されました。

gc

get_objects() が、オブジェクトを取得する世代を示す省略可能な generation パラメータを受け取れるようになりました。(ただし、 gc は組み込みですが get_objects() は MicroPython では実装されていません)

math

2点間のユークリッド距離を計算する新しい関数 math.dist() が追加されました

math.hypot() 関数が多次元を扱えるように拡張されました

sum() に相当する新しい関数 math.prod() が追加されました。これは「開始」値(デフォルト: 1)に数値のイテラブルを掛けた積を返します

2つの新しい組み合わせ関数 math.perm() と math.comb() が追加されました

浮動小数点数に変換せずに正確な整数平方根を計算する、新しい関数 math.isqrt() が追加されました

math.factorial() 関数は、int 風でない引数を受け付けなくなりました

完了

sys

「送出できない例外」の扱いを制御するためにオーバーライドできる、新しい sys.unraisablehook() 関数が追加されました