概要
Python 3.3 安定版が今月中にリリースされる予定。すでに rc2 までリリースされているので、新機能を確認しておこうと思う。
新機能の確認
「What’s New In Python 3.3」で新機能が確認できる。
まだ、良く理解してない機能もある。機能が多すぎて全部は無理なので、とりあえず上からメモしておく。以下のメモは正しさは一切保証しない。
Virtual Environments
「virtualenv」として存在した、Pythonの環境を切り分ける機能と同等の物が「venv」機能として実装された。「pyvenv」コマンドがインストールされるので、「pyvenv」コマンドを利用するのが簡単そう。
本当はパッケージ管理ツールの「pysetup」も入るはずだったのだけど、品質が向上しなかったり等で今回は外された。正直「pysetup」がはいってない「pyvenv」だけだといまいちな印象になってしまっている。
Namespace Packages
Pythonでパッケージを作成するにはディレクトリ内に「__init__.py」を用意する必要があったが、不要になった。
Python 3 は Python 2 と import の動作が異なるので注意。
New memoryview implementation and buffer protocol documentation
Python 3 では buffer() が memoryview() に変更されて、かなりいろいろ変更されている。
Flexible String Representation
文字列は完全に UCS-4 対応している。文字列表現は Python 3.2 まではちょっと厳密すぎたのだけど、すこし緩くなった。
Reworking the OS and IO exception hierarchy
OS と IO の例外階層が整理されている。綺麗になってデバッグしやすい等、便利。
Syntax for Delegating to a Subgenerator
「yield from」が追加されて、これはとても便利。というか、この手の機能を必要とする人にはめちゃくちゃ便利。
Suppressing exception context
例外の中で例外出すときに「raise from」文法が追加されている。
Explicit Unicode literals
Python 2 では u'xxx' みたいにして Unicode literals を明示していたが、Python 3.2 までは明示せずに Unicode literals になったので u'xxx' の機能がなかった。Python 3.3 では u'xxx' 表現が復活、でも付けてもたいした意味はない。Python 2 との互換性維持等が目的。
地味に Python 2 でも Python 3 でも動作するソース作成しようとすると面倒だったので、この改善は良いと思う。
Qualified name for classes and functions
class と function にQualified name(修飾名)を取得できる「__qualname__」が増えた。
Key-Sharing Dictionary
いろいろと細かい事はあるのだけど、組み込みの dict(辞書)のメモリ効率が良くなり、早くなったと思っておけば良いような。
Function Signature Object
functionのシグニチャがオブジェクトになっている。「inspect.signature()」メソッドが増えたりしている。
かなり便利なのだけど、どのぐらいの人がこの機能を使うのかわからない。
Adding sys.implementation
「sys」モジュールに「sys.implementation」が増えた。
lzma
lzma に標準で対応した。bz2 も修正されている。
まとめ
機能が多すぎて力つきた。理解してない機能があるけど、手元の Python 2 でしか動作しない自作モジュールとかを移植しながら勉強しようと思う。