でました。上記サイトに書いてあるけど一応転記。
- 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系に移行したらいいんでしょうか。