Pythonには、フォーマットされた出力を生成する2つの異なる方法があるようです。
user = "Alex"
number = 38746
print("%s asked %d questions on stackoverflow.com" % (user, number))
print("{0} asked {1} questions on stackoverflow.com".format(user, number))
他よりも優先される方法はありますか?それらは同等ですか、違いは何ですか?特にPython3では、どの形式を使用する必要がありますか?
特にPython 3および将来について懸念がある場合は、format
メソッドを使用してください。 ドキュメント から:
ここで説明するフォーマット操作は、Cの
printf()
構文に基づいています。特定の組み込みタイプのフォーマットのみをサポートします。二項演算子の使用は、タプルと辞書を正しくフォーマットするために注意が必要な場合があることを意味します。新しい:ref:string-formatting
構文はより柔軟であり、タプルと辞書を自然に処理するため、新しいコードに推奨されます。ただし、printf
スタイルのフォーマットを非推奨にする現在の計画はありません。
.format
はPython2.6で導入されました
以前のPythonとの後方互換性が必要な場合は、%
を使用する必要があります
Python3以降では、.format
を使用する必要があります
.format
は%
よりも強力です。 %
から.format
への移植は簡単ですが、逆の方法は簡単ではない場合があります
両方を使用できます。%フォーマット式が廃止されるとは誰も言いません。また、%表現はもう少し簡潔で、コーディングが簡単であることに注意してください。
ドキュメントformat
メソッドが新しいコードに適していると言います。ただし、現在%フォーマットを削除する予定はありません。