Python 3.8
Python 3.8.0 (final) は 2019年10月14日にリリースされました。3.8 の機能は PEP 569 で定義されており、変更点の詳しい説明は What's New in Python 3.8. にあります
機能 |
状態 |
|
位置専用引数 |
||
代入式 |
完了 |
|
帯域外データに対応した pickle プロトコル 5 |
||
実行時の監査フック |
||
Python の初期化の設定 |
||
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.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つの新しいパラメータが追加されました。 |
|
get_objects() が、オブジェクトを取得する世代を示す省略可能な generation パラメータを受け取れるようになりました。(ただし、 gc は組み込みですが get_objects() は MicroPython では実装されていません) |
|
2点間のユークリッド距離を計算する新しい関数 math.dist() が追加されました |
|
math.hypot() 関数が多次元を扱えるように拡張されました |
|
sum() に相当する新しい関数 math.prod() が追加されました。これは「開始」値(デフォルト: 1)に数値のイテラブルを掛けた積を返します |
|
2つの新しい組み合わせ関数 math.perm() と math.comb() が追加されました |
|
浮動小数点数に変換せずに正確な整数平方根を計算する、新しい関数 math.isqrt() が追加されました |
|
math.factorial() 関数は、int 風でない引数を受け付けなくなりました |
完了 |
「送出できない例外」の扱いを制御するためにオーバーライドできる、新しい sys.unraisablehook() 関数が追加されました |
|