96

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

4

4 に答える 4

108

format特に Python 3 と将来に関心がある場合は、この方法を使用してください。ドキュメントから:

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

于 2012-09-12T07:00:26.673 に答える
25

.formatPython2.6で導入されました

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

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

.formatより強力です%%への移植.formatは簡単ですが、その逆は簡単ではありません

于 2012-09-12T07:05:19.367 に答える
8

ドキュメントによると、このformat方法は新しいコードに適しています。ただし、現在、% 形式を削除する予定はありません。

于 2012-09-12T07:04:13.003 に答える