我正在维护一个旧的Python代码库,其中包含一些非常奇怪的习惯用法。我遇到的一件事是使用百分比编码样式的字符串格式:
'Error %s: %s' % (str(err), str(message))
忽略现代字符串插值的.format()
的存在,我的问题是:
是否有必要使用%s
明确转换str()
个参数,或者这与%s
完全相同?
答案 0 :(得分:6)
不,不需要明确的str()
来电,%s
格式化工具已包含 str()
来电:
>>> class Foo(object):
... def __str__(self):
... return "I am a string for Foo"
...
>>> '%s' % Foo()
'I am a string for Foo'
String Formatting Operations section:
中也明确记录了这一点
's'
String(使用str()
转换任何Python对象。)
答案 1 :(得分:2)
无需这样做。 %s
是用于打印的字符串格式化语法。这可能有助于添加更多上下文:
答案 2 :(得分:0)
这取决于您使用的确切规格。使用接近于C语言printf的语法的旧样式格式。例如,
str()
)。repr()
)。您拥有documentation上的整个列表。