質問: "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)
回答: あなたのpython> = 3.6の場合、f文字列フォーマットのリテラルがあなたの新しい友達です。それはより単純で、きれいで、そしてより良いパフォーマンスです。in [1]: params=['hello', 'adam', 42] in [2]: %timeit "%s %s, the answer to everything is %d."%(params[0],params[1],params[2]) 448 ns ± 1.48 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) in [3]: %timeit "{} {}, the answer to everything is {}.".format(*params) 449 ns ± 1.42 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) in [4]: %timeit f"{params[0]} {params[1]}, the answer to everything is {params[2]}." 12.7 ns ± 0.0129 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)