Python 3.9¶
Python 3.9.0(最終版)は 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) は、すべての非ゼロの n に対して、空文字列ではなく s を返すようになりました。これは "".replace("", s) と一貫しています | |
任意の有効な式をデコレータとして使用できるようになりました。以前は、文法ははるかに制限的でした | |
aclose() / asend() / athrow() の並行実行が禁止され、ag_running が非同期ジェネレータの実際の実行状態を反映するようになりました | |
__iter__ メソッドの呼び出しにおける予期しないエラーが、in 演算子や operator モジュールの関数 contains()、indexOf()、countOf() において TypeError によってマスクされなくなりました | |
括弧で囲まれていないラムダ式は、内包表記やジェネレータ式の if 節の式部分として使用できなくなりました |
組み込みモジュールの変更:
重大なセキュリティ上の懸念のため、asyncio.loop.create_datagram_endpoint() の reuse_address パラメータはサポートされなくなりました | |
デフォルトエクゼキュータのシャットダウンをスケジュールし、ThreadPoolExecutor のクローズ完了を待機する新しいコルーチン shutdown_default_executor() が追加されました。また、asyncio.run() がこの新しいコルーチンを使用するように更新されました。 | |
プロセスのファイルディスクリプタをポーリングする Linux 固有の子ウォッチャー実装である asyncio.PidfdChildWatcher が追加されました | |
新しい coroutine 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 はデフォルトで常に行バッファリングされます | |
注記