2012-11-25

Python 3.3 の嬉しいところ

いろいろ理由つけて(2を使うのがイヤになるとか)Python 3 敬遠してたけど 3.3 見たら理想言語っぽくなってたけどこれ見ると PyCon でしゃべったという Perl の人の言ってたことがますますトンチンカンということにならない?

具体的には、Windows 版で 2.x と共存しやすくなった点と、Unicode 文字列のサポートの改善がうれしい。

Python 3.3 を Windows にインストールすると、py コマンドというのが入る。これは .py ファイルに関連付けられていて、スクリプトの #! 行を見て Python 2.x と 3.x とを実行しわけるというものである。これで、ふだんの python コマンドは 2.7 だけど、スクリプトを少しずつ 3.x に対応させていくために 3.3 をインストールしておいて、徐々に移行させてゆくというのがやりやすくなった。

コマンドプロンプトで py と打つだけでインタプリタが起動するのもいいかもしれない。py -3 とすれば 3.x が立ちあがる。

Unicode サポートの改善は、文字列の内部実装が完全に隠蔽されたのが嬉しい。len(‘\U00029e3d’) は Python が narrow ビルドでも wide ビルドでもつねに 1 になる。文字列オブジェクトは Unicode コード・ポイントの配列という概念で一貫して扱うことができる。すばらしい。しかも単に 4 バイトの整数配列にしてる実装よりメモリ効率もよさげ(これは憶測だけど)。書きかけのままだけど「Unicode テキスト境界処理覚え書き」のコード・ポイントのところはまったく気にしなくてよくなったし、codepoint.py ももういらないね。

あーさっさと 3 に移行しちゃいたいなー。まあ GUI 持たないやつは今からでもできるからやってくか。

とはいえ、3.3.0 の対話インタプリタで BMP 外のコード・ポイント扱うと repr の表記がなんかバグっぽい……。

>>> '\U00029e3d'
'\U00029e3d\x27'
           ~~~~ !!