假设我不需要填充或其他格式转换,何时打印数字时%s超过%s是否重要?
从下面的片段,似乎没有区别.
>>> "%d %d"%(12L,-12L)
'12 -12'
>>> "%s %s"%(12L,-12L)
'12 -12'
Run Code Online (Sandbox Code Playgroud)
%s可以格式化任何python对象并打印它是一个字符串.在这种情况下,%d和%s打印相同的结果是因为您传递的是int/long对象.假设您尝试传递其他对象,%s将打印str()表示,%d将失败或将打印其数字定义值.
>>> print '%d' % True
1
>>> print '%s' % True
True
Run Code Online (Sandbox Code Playgroud)
如果您想要将longs/float转换为int,请使用%d.
基本情况差别不大.%d允许您进行%s不执行的数字格式设置.类型检查也有区别.如果您碰巧将非int发送到%d,您将收到错误,但%s将很乐意对其获取的任何内容进行字符串化.
Python2> "%s" % ("x",)
'x'
Python2> "%d" % ("x",)
<type 'exceptions.TypeError'> : %d format: a number is required, not str
Run Code Online (Sandbox Code Playgroud)