小能豆

为什么 Python 解释器使用 repr() 来打印表达式?

py

为什么 Python 解释器使用repr()打印表达式?

例如:

>>> S = "First line.\nSecond line."
>>> S
'First line.\nSecond line.'

当然我可以str()通过打印语句触发:

>>> print S
First line.
Second line.

但为什么str()在交互模式下默认不触发呢?从很多方面来看,这似乎是一个更好的选择。


阅读 44

收藏
2024-11-28

共1个答案

小能豆

str()用于“漂亮的打印”,但在 Python 解释器中,您更可能需要背景信息,例如对象的 id、它是什么类等(理论上),并且repr()用于此。如果运行pydoc __builtin__.repr,它会说“对于大多数对象类型,eval(repr(object)) == object。” 有些类型完全不同,但其__str__方法返回相同的东西。例如,str(str(some_object))与相同str(same_object),所以如果我有一个列表,,[0, 4, 5]并且我用打印它str,我会得到[0, 4, 5]。如果我str(mylist)用打印str(),我仍然会得到,[0, 4, 5]即使它们是不同的类型。repr()但是,用str(mylist)会被打印为'[0, 4, 5]'这更有可能是我想要的。使用解释器的人可能正在测试某些东西或调试某些东西,他想知道它是一个字符串,而不是真正的列表。

2024-11-28