Python中 %r, %s 和 %d 之间有什么区别?

1 投票
2 回答
59868 浏览
提问于 2025-04-17 17:39

我一直在用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) 的结果)。

如果你格式化的是一个整数,那么这三种方式是一样的。但对于大多数其他对象来说,情况就不一样了。

撰写回答