1. ホーム
  2. パイソン

[解決済み】sys.stdout.writeとprintの違い?

2022-03-23 17:44:34

質問

という場面はありますか? sys.stdout.write() よりも望ましいとされています。 print ?

( より良いパフォーマンス、より理にかなったコード)

解決方法は?

print は単なる薄いラッパーで、入力をフォーマットし (変更可能ですが、デフォルトでは args の間にスペースを入れ、最後に改行します)、与えられたオブジェクトの書き込み関数を呼び出します。デフォルトでは、このオブジェクトは sys.stdout しかし、"chevron" の形式を使ってファイルを渡すことができます。例えば

print >> open('file.txt', 'w'), 'Hello', 'World', 2+3

ご覧ください。 https://docs.python.org/2/reference/simple_stmts.html?highlight=print#the-print-statement


Python 3.xの場合。 print は関数になりますが、まだ sys.stdout のおかげで file 引数で指定します。

print('Hello', 'World', 2+3, file=open('file.txt', 'w'))

参照 https://docs.python.org/3/library/functions.html#print


Python 2.6+の場合。 print はまだステートメントですが、関数として使うには

from __future__ import print_function


更新:Bakuriuさんから、print関数とprint文(一般的には関数と文)の間にちょっとした違いがあることを指摘するコメントがありました。

引数の評価でエラーが発生した場合。

print "something", 1/0, "other" #prints only something because 1/0 raise an Exception

print("something", 1/0, "other") #doesn't print anything. The function is not called