Python 3.3〜3.5の変更点まとめ(標準編)

この記事は3.2まではPythonを使っていたが、しばらくPythonを離れ、最近戻ってくることになった人*1向けに、 3.3〜3.5で何があったか(何が起こる予定か)をまとめる記事です。

追加された新機能(基本文法・組み込みツール編)

3.3 ジェネレータの委譲のための新しい yield from 式
`u'unicode'`記法の復活
`venv`モジュールの追加
IOError, OSErrorの継承の階層が変更
クラス・関数に`__qualname__`属性を追加
3.4 なし
3.5 [mypy](http://www.mypy-lang.org/)による静的型チェックを標準サポート?

追加された新機能(ライブラリ編)

3.3 `ipaddress`モジュールの追加
`unittest.mock`モジュールの追加
3.4 `asyncio`モジュールの追加
`enum`モジュールの追加
`pathlib`モジュールの追加
`statictics`モジュールの追加
`functools.singledispatch`モジュールの追加
3.5 `contextlib.redirect_stderr`の追加
`glob.glob`と`glob.iglob`が、任意階層のサブディレクトリにマッチする `**` をサポート
`ipaddress.IPv4Network`と`ipaddress.IPv6Network`が`(address, netmask)`も受け取るよう変更
`json`がデコードエラー時に`ValueError`の代わりに`json.JSONDecodeError`を創出するように変更
`re.sub`と`re.subn`が、マッチしなかったグループは空文字列に置換されるように変更 (今までは`sre_constants.error`が送出されていた)
`shutil.move`が、`copy_function`引数を取るように変更。

開発ツール

3.3でvirtualenvを標準ライブラリにポートした、venvが追加されました。virtualenvをインストールする手間は無くなりましたが、しかしそれ以外のメリットはとくに無いように見えます。

また、個人的にゴリ押ししているツールdirenvを使うとvirtualenvがもっと便利になります。

最近のゴリ押し

その他

JITを導入して高速化したPyston と、組み込み向けのMicroPythonが登場しましたが、どちらも開発中です。

*1:つまり私