Python 2.6では、既存の演算子str.format()
とは構文が少し異なるメソッドが導入されました。%
どちらがより良いですか、そしてどのような状況のために?
Python 3.6では、構文を介して文字列リテラル(別名「f」文字列)の別の文字列フォーマット形式が導入されましたf"my string"
。このフォーマットオプションは他のオプションよりも優れていますか?
以下はそれぞれの方法を使用し、同じ結果をもたらしますが、違いは何ですか?
#!/usr/bin/python sub1 = "python string!" sub2 = "an arg" sub_a = "i am a %s" % sub1 sub_b = "i am a {0}".format(sub1) sub_c = f"i am a {sub1}" arg_a = "with %(kwarg)s!" % {'kwarg':sub2} arg_b = "with {kwarg}!".format(kwarg=sub2) arg_c = f"with {sub2}!" print(sub_a) # "i am a python string!" print(sub_b) # "i am a python string!" print(sub_c) # "i am a python string!" print(arg_a) # "with an arg!" print(arg_b) # "with an arg!" print(arg_c) # "with an arg!"
さらに、Pythonで文字列のフォーマットはいつ行われますか?たとえば、ログレベルがHIGHに設定されている場合でも、次の
%
操作を実行するためにヒットしますか?もしそうなら、これを回避する方法はありますか?log.debug("some debug info: %s" % some_info)