SSブログ

Python 2.5 までと Python 3 の syntax の違い [Python]

http://nakagami.blog.so-net.ne.jp/2011-10-13 の続き
じゃあ、実際にどこがどう変わったか具体的に調べる。
ライブラリはきりがないので言語の syntax に絞って調べる。
2.6 からはもう少し Python3 に近づいているが、諸事情により 2.5 と比較

[文字列]
デフォルトで文字列の扱いが unicode。 u'' とかつかない
python2 の文字列に相当するものはバイト列 b'' で表現
r'' は '' と同じ扱いで、ソースは utf8 なので、 unicode の文字列
'abc'.encode('sjis') == b'abc'
b'abc'.decode('sjis') == 'abc'
ソースコードの文字列は utf8 がデフォルト

[数値]
整数値と長整数の区別なくなる。 0L とかの L いらなくなる
(Python 2 でも、自動で long にしてるので、 int と long を区別してないだけ)
整数同士の割り算でも '/' 演算子の結果が浮動小数点になる
('/' は浮動小数の割り算 1/3 == 1.0/3.0 )

[ビルトイン関数とかキーワード]
print() 文でなくビルトイン関数になった
True/False/None がキーワードになった。 Python3 では True=1 とかできない

[クラス]
old style クラスなくなった。
old style の書き方しても new style class になればいいの?

[例外]
例外を変数に取得する時
except exc, var
じゃなくて
except exc as var
になった

Python3 では raise は
raise E(V)
とか
raise E(V).with_traceback(a_traceback)
んで a_traceback はどうやって作ればいいか知らない


[with statement]
2.5 では future 機能として使えるけど、デフォルトでは使えない

2.5 → 3.x ですごく変わった気がするけど、syntax ではこんなところですかね?
syntax とそれに関する semantic で影響が大きいのは[文字列]と[数値]のあたりかな
コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

コメント 0

コメントの受付は締め切りました

Facebook コメント

トラックバック 0