Python中 %r, %s 和 %d 之间有什么区别?
我一直在用Python里的%r格式,但我不知道什么时候该用其他格式...
2 个回答
11
这里有一个例子,可以补充一下James Henstridge的回答:
class Cheese(float):
def __str__(self):
return 'Muenster'
def __repr__(self):
return 'Stilton'
chunk = Cheese(-123.4)
print(str(chunk))
# Muenster
print(repr(chunk))
# Stilton
print(int(chunk))
# -123
print('%s\t%r\t%d'%(chunk, chunk, chunk))
# Muenster Stilton -123
16
这在Python文档中有解释。简单来说,
%d
是用来格式化数字的,方便显示。%s
是用来插入对象的字符串表现形式(也就是str(o)
的结果)。%r
是用来插入对象的标准字符串表现形式(也就是repr(o)
的结果)。
如果你格式化的是一个整数,那么这三种方式是一样的。但对于大多数其他对象来说,情况就不一样了。