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 による静的型チェックを標準サポート? |
追加された新機能(ライブラリ編)
| 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:つまり私