Python 3におけるsys.stdout.writeとprintの違い

PYTHON3 チュートリアル

Python 3におけるsys.stdout.writeとprintの違い

Python 3において、sys.stdout.writeprintはともに標準出力にテキストを出力するための方法ですが、いくつかの違いがあります。

1. 出力の形式

sys.stdout.writeは、テキストをそのまま出力するため、改行文字やスペースなどを自分で調整する必要があります。一方、printは、デフォルトで自動的に改行を追加して出力してくれます。

import sys

sys.stdout.write("Hello, ")
sys.stdout.write("World!")  # 改行なし

print("Hello, ")
print("World!")  # 改行あり

上記のコードを実行すると、sys.stdout.writeは改行がないまま”Hello, World!”と出力されますが、printは改行が自動的に挿入されて”Hello,”と”World!”が別々の行に表示されます。

2. 戻り値

sys.stdout.writeは、出力した文字列の長さを返しますが、printはNoneを返します。

import sys

length = sys.stdout.write("Hello, World!")
print(length)  # 出力: 13

result = print("Hello, World!")
print(result)  # 出力: None

上記のコードでは、sys.stdout.writeは”Hello, World!”の文字数である13を返し、printはNoneを返すことが確認できます。

3. デフォルトの出力先

sys.stdout.writeは、標準出力に直接書き込むため、出力先を変更することができます。一方、printはデフォルトで標準出力に出力されますが、出力先を変更することはできません。

import sys

sys.stdout = open("output.txt", "w")

sys.stdout.write("Hello, World!")  # ファイルに書き込まれる

print("Hello, World!")  # 標準出力に出力される

上記のコードでは、sys.stdoutをファイルに変更した場合、sys.stdout.writeは指定されたファイルに書き込まれ、printは標準出力に出力されます。

以上がPython 3におけるsys.stdout.writeprintの主な違いです。適切な状況に応じて使い分けることで、効果的にテキストを出力することができます。

Python 3におけるsys.stdout.writeとprintの違いは、出力方法という点で異なります。sys.stdout.writeは、標準出力に直接文字列を書き込むメソッドであり、改行文字を自動的に追加しません。一方、print文は、指定されたオブジェクトを文字列に変換して標準出力に出力し、末尾に改行文字を追加します。そのため、sys.stdout.writeを使用すると改行が自動的に挿入されないため、改行を明示的に追加する必要があります。一方、print文は改行を自動的に挿入するため、簡単に改行付きの出力を行うことができます。

購読
通知
0 Comments
Inline Feedbacks
View all comments