文字列フォーマット式:
'This is %d %s example!' % (1, 'nice')
文字列フォーマットメソッドの呼び出し:
'This is {0} {1} example!'.format(1, 'nice')
私は個人的に読みやすさのためにメソッド呼び出し(2番目の例)を好みますが、それは新しいので、これらのいずれかが時間の経過とともに非推奨になる可能性があります。どちらが廃止される可能性が低いと思いますか?
文字列フォーマット式:
'This is %d %s example!' % (1, 'nice')
文字列フォーマットメソッドの呼び出し:
'This is {0} {1} example!'.format(1, 'nice')
私は個人的に読みやすさのためにメソッド呼び出し(2番目の例)を好みますが、それは新しいので、これらのいずれかが時間の経過とともに非推奨になる可能性があります。どちらが廃止される可能性が低いと思いますか?
ない; 1つ目は多くの場所で使用され、2つ目は導入されたばかりです。したがって、問題は、どちらのスタイルを好むかということです。私は実際にdict
ベースのフォーマットを好みます:
d = { 'count': 1, 'txt': 'nice' }
'This is %(count)d %(txt)s example!' % d
これにより、適切なパラメータが適切な場所に配置され、同じパラメータを複数の場所で再利用できるようになります。
%
演算子は3.1ですでに非推奨になっていることを読んだと思ったので、このformat()
関数を使い続けます。
PEP 3101を参照してください:文字列フォーマットへの新しいアプローチ
元々のアイデアは、両方の方法を許可しながら、徐々にstr.format()アプローチに切り替えることでした。
PEP 3101:
新しいシステムは、既存の文字列フォーマット手法のどのメソッド名とも衝突しないため、古いシステムを廃止する時期になるまで、両方のシステムが共存できます。
アイデアはまだ追求されています:
新しいstr.format()の使用を引き続き推奨しています。 Python Issue 7343
元の「%」アプローチは非推奨になり、将来的に削除される予定なので、str.format()を使用して新しいコードを作成することをお勧めします。現時点では、それは個人的な好みの問題ですが。私は個人的に、'%'演算子とstr.format()メソッドの両方でサポートされている辞書ベースのフォーマットを使用することを好みます。