Python 3.9
Python 3.9.0 (final) は 2020年10月5日にリリースされました。3.9 の機能は PEP 596 で定義されており、変更点の詳しい説明は What's New in Python 3.9 にあります
機能 |
状態 |
|
C 拡張型のメソッドからモジュールの状態への高速なアクセス |
関係なし |
|
dict への和集合演算子の追加 |
完了 [1] |
|
標準のコレクションにおけるジェネリックの型ヒント |
||
柔軟な関数・変数のアノテーション |
||
CPython が年次のリリースサイクルを採用。年次ではなく2か月のリリースサイクルを目指す |
関係なし |
|
デコレータに対する文法上の制限の緩和 |
||
IANA タイムゾーンデータベースが zoneinfo モジュールとして標準ライブラリに入りました |
||
接頭辞と接尾辞を取り除く文字列メソッド |
||
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.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.is_finalized() が追加されました |
|
math.gcd() 関数が複数の引数を扱えるように拡張されました。以前は2つの引数しかサポートしていませんでした |
|
math.lcm() が追加されました: 指定された引数の最小公倍数を返します |
|
math.nextafter() が追加されました: x から y の方向にある次の浮動小数点数の値を返します |
|
math.ulp() が追加されました: 浮動小数点数の最下位ビットの値を返します |
|
Linux 固有の os.pidfd_open() と os.P_PIDFD が公開されました |
|
os.unsetenv() 関数が Windows でも利用できるようになりました |
完了 |
os.putenv() と os.unsetenv() 関数が常に利用できるようになりました |
完了 |
os.waitstatus_to_exitcode() 関数が追加されました: wait のステータスを終了コードに変換します |
|
新しい random.Random.randbytes メソッドが追加されました: ランダムなバイト列を生成します |
|
新しい sys.platlibdir 属性が追加されました: プラットフォーム固有のライブラリディレクトリの名前です |
|
以前は、非対話時の sys.stderr はブロックバッファリングされていました。現在、stderr はデフォルトで常に行バッファリングされます |
|
注記