YAMAGUCHI::weblog

噛み付き地蔵に憧れて、この神の世界にやってきました。マドンナみたいな男の子、コッペです。

Python3.0リリース

でました。上記サイトに書いてあるけど一応転記。

  • Unicodeへの全面移行を実施。str型はUnicode文字列を表現し、それ以外のデータ/バイナリデータはbytes型で表現する。 strとbytesの変換はstr.encode()およびbytes.decode()で実施する。Unicodeとそれ以外の8ビット文字コード文字列を混ぜて扱うとエラーとなる。バイナリデータはb"…"で表現する必要があるが、Unicodeはもはやu"…"で表記する必要はない
  • str型とbytes型は変更不可として扱われるため、バッファとして活用する場合にはbytearrayを使う。bytearrayは bytesで扱えるほとんどのAPIが使えるため、変更が頻繁に発生する場合にはbytesの代わりにbytearrayを指定すればよい
  • Unicodeベースに移行したことで、r'\u20ac'といった表記はそのまま「\u20ac」といった文字列を表現するようになった
  • ディクショナリの動作を変更し、これまでリストを返していた関数はかわりにビューやイテレータを返すようになった。またこの変更に伴い、.iterkeys()、.iteritems()、.itervalues()は削除されている
  • 比較演算子の厳密化とcmp()関数の廃止。cmp()の代わりに__lt__()、__eq__()、__hash__()などの関数を使う
  • int型とlong型はintという名称に統合された。このため整数を扱う場合はint型を使う必要がある。この新しいint型は従来のlong型と同じように振る舞う
  • print記述はprintからprint()へと変更された。3.0では括弧のついていないprint記述は使えないため、かわりにprint()記述を使う必要がある。この変更は2to3ソースコード変換ツールで自動的に変換できる
  • 標準ライブラリにおける名称をより統一のあるものへ変更

これは大分違いますね。やっぱり文字列周辺が大きく変化しましたね。しかししばらくはPython2系で書いていこうと思うんですが、いつPython3系に移行したらいいんでしょうか。