Python 3.5の新しい言語機能とライブラリモジュール
Python 3.5がリリースされた。いくつかの新しい構文、新しいライブラリモジュール、標準ライブラリおよびセキュリティに対する改善など、数多くの変更が含まれている。
構文
Python 3.5に導入された3つの新しい構文:
async-await構文を使ったコルーチン。開発者はまるでシーケンシャルであるかのようにコードを書くことができる。実際には、コンパイラはそれを一連のコルーチンで実装し、効果的に並列化する。次の例では、複数のawait
文がシーケンシャルに実行されるように見えるが、実際にブロックすることはない。
async def read_data(db):
data = await db.fetch('SELECT ...')
if (data...)
await api.send(data ...')
行列乗算演算子。行列の乗算がa @ b
で表現できるようになる。これを使うと次のように書ける。
S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)
以前はこのように書いていた。
S = dot((dot(H, beta) - r).T, dot(inv(dot(dot(H, V), H.T)), dot(H, beta) - r))
アンパッキングの一般化。*
アンパッキング演算子を使用を拡張する。関数呼び出しやタプル内部で複数回使える。
>>> print(*[1], *[2], 3)
1 2 3
>>> dict(**{'x': 1}, y=2, **{'z': 3})
{'x': 1, 'y': 2, 'z': 3}
>>> *range(4), 4
(0, 1, 2, 3, 4)
ライブラリモジュール
Python 3.5に導入された新しいライブラリモジュール:
zipapp
モジュールは、実行可能なPython Zip Applicationを作成するためのAPIとコマンドラインツールを提供する。Python 3.5に含まれるその他の変更:
collections.OrderedDict
とfunctools.lru_cache()
の新しいC実装os.scandir()
加えて、SSLv3はデフォルトで無効になる。もし必要なら有効にすることもできる。