Python 3000 has come!

2日遅れ.
いろいろと地味によくなってる感じ.とりあえず自分用まとめ.
詳しくはこっち.http://docs.python.org/3.0/whatsnew/3.0.html

print 文 -> print 函数

これがいちばん有名.

# 一行出力
old: print 'hoge'
new: print('hoge')

# 改行しない
old: print 'hoge',
new: print('hoge', end='')

# 並べて出力
old: print 'hoge', 'piyo'
new: print('hoge', 'piyo', sep=' ')

# 出力先を指定
old: print >>sys.stderr 'hoge'
new: print('hoge', file=sys.stderr)

まあたしかに,print は普通の函数ではない…というので
今までの仕様も理解できなくはないのですが,いろいろ便利になった.うん.

iterator

  • dict.keys, dict.items, dict.values が list ではなくて view を返すようになった.
  • map, filter, zip も view を返すようになった.

これはいいかも.
今までは新しい list を返してたからちょっと躊躇する場面もあったんだよね.
まあ,今までよりも注意が必要になるかもしれないけど.

文字列が wchar になった

perl は 5.8 からだったかな.Java はもともと.
どっかの紅い宝石言語とは違って,こういうところは流石というべきか.

with 構文

これが本命.2.6 にも merge されてる.それにしてもこれは神.

# ruby
open('hoge,txt', 'r') do |f|
  # いろいろ
end
# python 3
with open('hoge.txt', 'r') as f:
  # いろいろ

はい,華麗なまでにパクりですね.でも OSS ならではのこのフットワークが素敵.
ちなみに,今までは…

# python 2.5
f = open('hoge.txt', 'r')
try:
  # いろいろ
finally:
  f.close()

その他

  • super() なんてものができた
  • reduce がなくなったorz 代わりに functools.reduce を使えとのこと
  • python 2.5 に比べて約 10% 遅くなったとさorz

そしてなによりも,ドキュメントがだいぶ見易くなった
これは訳すしかないでしょう.そして python JP のあのもっさいデザインもついでになんとか汁.