Mil*_*ams 3 python string string-formatting
我正在维护一个旧的Python代码库,其中包含一些非常奇怪的习惯用法.我遇到的一件事是使用百分比编码样式的字符串格式:
'Error %s: %s' % (str(err), str(message))
Run Code Online (Sandbox Code Playgroud)
忽略.format()现代字符串插值的存在,我的问题是:
是否有必要显式转换%s参数str()或者究竟是什么%s呢?
不,不需要显式str()调用,%s格式化程序已经包含一个str()调用:
>>> class Foo(object):
... def __str__(self):
... return "I am a string for Foo"
...
>>> '%s' % Foo()
'I am a string for Foo'
Run Code Online (Sandbox Code Playgroud)
这也在字符串格式化操作部分中明确记录:
's'
String(使用转换任何Python对象str()).