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

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

Python 3.9

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

機能

状態

PEP 573

C 拡張型のメソッドからモジュールの状態への高速なアクセス

関係なし

PEP 584

dict への和集合演算子の追加

完了 [1]

PEP 585

標準のコレクションにおけるジェネリックの型ヒント

PEP 593

柔軟な関数・変数のアノテーション

PEP 602

CPython が年次のリリースサイクルを採用。年次ではなく2か月のリリースサイクルを目指す

関係なし

PEP 614

デコレータに対する文法上の制限の緩和

PEP 615

IANA タイムゾーンデータベースが zoneinfo モジュールとして標準ライブラリに入りました

PEP 616

接頭辞と接尾辞を取り除く文字列メソッド

PEP 617

CPython が PEG に基づく新しいパーサを使うようになりました

関係なし

その他の言語の変更:

__import__() が ValueError ではなく ImportError を発生させるようになりました

完了

Python は、コマンドラインで指定されたスクリプトのファイル名の絶対パスを取得するようになりました(例: python3 script.py)。 __main__ モジュールの __file__ 属性は相対パスではなく絶対パスになりました

デフォルトでは、性能を最優先するため、errors 引数は最初のエンコード/デコードのエラー時にのみ確認され、encoding 引数は空文字列に対しては無視されることがあります

"".replace("", s, n) は、0 でないすべての n に対して空文字列ではなく s を返すようになりました。これで "".replace("", s) と一貫するようになりました

任意の有効な式をデコレータとして使えるようになりました。以前の文法はもっと制限的でした

aclose() / asend() / athrow() の並行実行が禁止され、 ag_running が非同期ジェネレータの実際の実行状態を反映するようになりました

__iter__ メソッドの呼び出しで起きた予期しないエラーが、in 演算子や operator モジュールの contains() 、indexOf() 、countOf() の関数で TypeError に隠されなくなりました

括弧で囲まない lambda 式は、内包表記やジェネレータ式の if 節の式部分として使えなくなりました

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

asyncio

重大なセキュリティ上の懸念により、 asyncio.loop.create_datagram_endpoint() の reuse_address パラメータはサポートされなくなりました

デフォルトのエグゼキュータのシャットダウンを予約し、 ThreadPoolExecutor の終了を待つ、新しいコルーチン shutdown_default_executor() が追加されました。また、 asyncio.run() もこの新しいコルーチンを使うよう更新されました。

プロセスのファイル記述子をポーリングする Linux 固有の子プロセスウォッチャの実装 asyncio.PidfdChildWatcher が追加されました

新しい コルーチン asyncio.to_thread() が追加されました

タイムアウトによりタスクをキャンセルする際、 asyncio.wait_for() は、正のタイムアウトの場合と同様に、timeout が 0 以下の場合でもキャンセルが完了するまで待つようになりました

asyncio は、 ssl.SSLSocket のソケットに対して互換性のないメソッドを呼び出すと TyperError を発生させるようになりました

gc

ガベージコレクションは、復活したオブジェクトでブロックしなくなりました

オブジェクトがガベージコレクタによって終了処理されたかどうかを調べる、新しい関数 gc.is_finalized() が追加されました

math

math.gcd() 関数が複数の引数を扱えるように拡張されました。以前は2つの引数しかサポートしていませんでした

math.lcm() が追加されました: 指定された引数の最小公倍数を返します

math.nextafter() が追加されました: x から y の方向にある次の浮動小数点数の値を返します

math.ulp() が追加されました: 浮動小数点数の最下位ビットの値を返します

os

Linux 固有の os.pidfd_open() と os.P_PIDFD が公開されました

os.unsetenv() 関数が Windows でも利用できるようになりました

完了

os.putenv() と os.unsetenv() 関数が常に利用できるようになりました

完了

os.waitstatus_to_exitcode() 関数が追加されました: wait のステータスを終了コードに変換します

random

新しい random.Random.randbytes メソッドが追加されました: ランダムなバイト列を生成します

sys

新しい sys.platlibdir 属性が追加されました: プラットフォーム固有のライブラリディレクトリの名前です

以前は、非対話時の sys.stderr はブロックバッファリングされていました。現在、stderr はデフォルトで常に行バッファリングされます

注記