Python 2.6では、str.format()
既存の%
演算子とは構文が少し異なるメソッドが導入されました。どちらがより適切で、どのような状況に適していますか?
以下はそれぞれの方法を使用し、同じ結果をもたらすので、違いは何ですか?
#!/usr/bin/python sub1 = "python string!" sub2 = "an arg" a = "i am a %s" % sub1 b = "i am a {0}".format(sub1) c = "with %(kwarg)s!" % {'kwarg':sub2} d = "with {kwarg}!".format(kwarg=sub2) print a # "i am a python string!" print b # "i am a python string!" print c # "with an arg!" print d # "with an arg!"
さらに、Pythonでは文字列フォーマットがいつ発生しますか?たとえば、ロギングレベルがHIGHに設定されている場合でも、次の
%
操作を実行するためにヒットしますか?もしそうなら、これを回避する方法はありますか?log.debug("some debug info: %s" % some_info)
%
スタイルをより頻繁に使用しています。スタイルの改善された機能が必要ない場合は、format()
スタイルの%
方がはるかに便利です。
format()
フォーマットスタイルと古い%
ベースのフォーマットスタイルに関するPython 3のドキュメント。