Python2のsoftspace
いまさら言うのもなんだが、Python3ではファイルのsoftspace
が廃止されている。これはprint
ステートメントでテキストを出力するとき、先頭にスペースを付加するかどうかのフラグだ。Python2ではprint
ステートメントの最後に ,
をつけると
print "a", # 改行文字を出力しない print "b", # 改行文字を出力しない print "c" # 改行文字を出力する
とすると、
a b c
のように改行文字を出力せず、文字の前に適切にスペースを付けて出力するようになっていた。
この動作を管理しているのがファイルオブジェクトのsoftspace
フラグで、
import sys print "a", # 改行文字を出力しない sys.stdout.softspace=0 print "b", # 改行文字を出力しない print "c" # 改行文字を出力する
とすると結果は
ab c
となる。この機能はprint
ステートメントでだけ有効で、例えば
import sys print "a", sys.stdout.write("b") print "c"
のようにファイルオブジェクトのwrite()
メソッドを使うと、出力は
abc
となってしまう。Python3ではこのような暗黙のうちに使われるフラグは廃止するので、必要ならプログラムで明示的に行ってください、ということだろう。