web-dev-qa-db-ja.com

Python印刷の方法:「フォーマット」またはパーセント形式で?

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では、どの形式を使用する必要がありますか?

94
Alex

特にPython 3および将来について懸念がある場合は、formatメソッドを使用してください。 ドキュメント から:

ここで説明するフォーマット操作は、Cのprintf()構文に基づいています。特定の組み込みタイプのフォーマットのみをサポートします。二項演算子の使用は、タプルと辞書を正しくフォーマットするために注意が必要な場合があることを意味します。新しい:ref:string-formatting構文はより柔軟であり、タプルと辞書を自然に処理するため、新しいコードに推奨されます。ただし、printfスタイルのフォーマットを非推奨にする現在の計画はありません。

103
BrenBarn

.formatはPython2.6で導入されました

以前のPythonとの後方互換性が必要な場合は、%を使用する必要があります

Python3以降では、.formatを使用する必要があります

.format%よりも強力です。 %から.formatへの移植は簡単ですが、逆の方法は簡単ではない場合があります

22
John La Rooy

両方を使用できます。%フォーマット式が廃止されるとは誰も言いません。また、%表現はもう少し簡潔で、コーディングが簡単であることに注意してください。

8
devsaw

ドキュメントformatメソッドが新しいコードに適していると言います。ただし、現在%フォーマットを削除する予定はありません。

8
riamse