2010-11-07

Python 3.2 を調べ始めてみた

Python 3.2 alpha 3 が出ているので、見てみました。前提として、私は仕事では Django を使っている(ので、Python 2.x 系)のと、ちょっとした日々の作業のスクリプトを Python 3.1 で書いています。その視点で気になったことリスト。

@atsuoishimoto に教えてもらったファイル名の取り扱いに変更があります。UTF-8 決め打ちじゃなくて、システムロケール使うぜ、と。os.fsencode() と os.fsdecode() でシステムロケールに合わせた、エンコード/デコードができます。

コンパイル済みコードの置き場が変わります。これまでは、foo.py が foo.pyc になってました。が、これだと複数の Python があったりすると、インタプリタが変わるごとに結局再コンパイルでした。てなわけで、__cahced__/foo.cpython-32.pyc みたいなファイル名で保存されます。

Logging の設定を、API 経由だけじゃなくて、辞書で指定できます。

3.1 では hasattr() があらゆる例外を握りつぶしていたのですが、AttributeError 以外はちゃんと伝搬してくれます。

などなど。あと全体的にパフォーマンスが上がっているようです。

個々の変更が、どういう影響があるかは、Python の使い方によって違うと思います。logging 使ってない人にしてみたらどうでもいいわけです。

個人的な印象としては、ものすごく大きな変更ではないようです。が、見逃していることは多々あるでしょうね。