print_function
http://d.hatena.ne.jp/kazkun/20090529/1243560131
他の言語の経験が長いためか、Pythonの面倒なところ、嫌なところはたくさんでてくる。
※例えばprintで最後を改行もせず空白も空けない事ができないとか、副作用を持ったプロシジャが値を返してくれないとか
print は pythonic ではないと認識されていて、 py3k では関数になります。
Python 2.6 でも from __future__ import print_function とすると、
print("foo", 3, "baz", end='', sep=',') # foo,3,baz
なんてことが出来ます。
さらに、
from functools import partial p = partial(print, file=open('/path/to/foo', 'w'))
のようにして、出力ストリームをbindしたり、いろいろ便利になります。
なので、自分用プログラムではpy3kを常用・・・までは行かなくても、from __future__ import print_function, unicode_literal くらいは常用しています。
副作用を持ったプロシジャが値を返してくれると、便利なときは便利だけど、「変更した結果を新しいオブジェクトとして返している」のか「自分自身を変更して自分自身を返している」のか判りにくくなってしまいます。
このあたりは、式をどんどん繋げていくよりも、要所要所で文に分けるのが Pythonic と判断されているので、py3kでも変わりません。ただし、式を要所要所で切ってもタイプ数はそれほど増えず、後で読みやすくなる効果もあるので、慣れると欠点と思わなくなります。