Python 3.5の新しい言語機能とライブラリモジュール

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に含まれるその他の変更:

加えて、SSLv3はデフォルトで無効になる。もし必要なら有効にすることもできる。