この記事を読むのに必要な時間:およそ 1 分
Python 3.0ついにリリース
2008年12月3日,Python 3.0がリリースされました。このバージョンは,数年前からPython 3000として言及されてきたPythonの次期メジャーバージョンです。3.0では,Pythonをより一貫性のある言語として昇華させるため,さまざまな機能追加や仕様変更がなされています。これまで,バージョンアップの際に極力避けられてきた後方互換性を壊す仕様変更を含め,言語仕様にまでメスが入れられています。Python 3.0の概要については,当サイトの記事「もっと知りたいPython 3000」などを参考にしてください。
2008年はPythonにとってとても大きなマイルストーンとなる年でした。2.6と3.0という2つのバージョンを同時に開発し,無事リリースしました。車にたとえると,2.6は現行販売車の最新モデル,3.0は現行車の近未来の姿を示すコンセプトモデルのようなものです。多くの開発者が利用しているバージョン2のラインを維持しながら,よりシンプルで一貫性のある3.0へと開発者の移行を進める,という今後数年間続くと思われる移行モデルの最初の年が2008年だったのです。
2009年は,Python自体のリリースはバグフィックスのみにとどまる予定です。Python自体のリリースは行われませんが,各種フレームワークやモジュールが2.6対応を進める課程で,バージョン3移行への展望が徐々に現実的になってくるのが2009年と言えるでしょう。
この連載は,ついにリリースされたPython 3.0ならではの機能を実際に使いながら,新機能や変更点について理解を深めようという目的で企画しました。実働するコードを打ち込みながら,Python 3.0の世界に親しんでください。
Python 3.0で識別子にUnicodeを使う
Python 3ではちょっと変わった変更が加えられています。Python 2ではASCIIのみしか識別子に使えなかったのが,Python 3ではUnicode文字列を識別子に使えるようになったのです。Python 3.0では,変数名や関数名,クラスやメソッドの名前としてアクセント付きの記号やひらがな,漢字を利用できます。
Unicodeの識別子を使って,Python 3.0でちょっとしたコードを書いてみましょう。メソッドの第一引数は通常selfですが,ここでは便宜上「自分」というようにしてみました。
>>> class ペット:
... 鳴き声 = '。。。'
... def 鳴く(自分):
... print('%s : %s' % (自分.__class__.__name__, 自分.鳴き声))
...
>>> class 犬(ペット):
... 鳴き声 = 'わん!'
...
>>> class 熊(ペット):
... 鳴き声 = 'クマー!'
...
>>> 君のペット = 犬()
>>> 君のペット.鳴く()
わん!
>>> 僕のペット = 熊()
>>> 僕のペット.鳴く()
クマー!
>>>
この変更はPEP 3131によって提案されました。漢字だけでなく,アクセント記号付きの文字を持つフランス語やドイツ語,ロシア語などをPythonの識別子として利用できるようになります。母国語を識別子として使えれば,Pythonの使いやすさや言語への親しみも増すはずです。
反面,漢字などを入力できない環境を使っている人にとっては,漢字のクラス名は悩みの種になるはずです。また,「犬」「いぬ」「イヌ」のように同じ言葉でも複数の表記があったり,送りがなの有無によって識別子が変わってしまうのでは,少々やっかいでもあります。日本語の識別子を使う時には,TPOについて気を遣った方がよいでしょう。PEP 3131では実際,この機能があったとしても,標準モジュールのコードはASCII文字であるべき,としています。
Python 3.0をHackしよう!
この連載では,私を含めて数人のPythonistaにお願いして,リレー形式で進めていく予定です。今後もたのしくためになる多彩なHackを紹介していきます。楽しみにしていてください。