为什么Python解释器使用repr()
打印表达式?
例如:
>>> S = "First line.\nSecond line."
>>> S
'First line.\nSecond line.'
当然可以触发str()
通过打印语句:
>>> print S
First line.
Second line.
但为什么是str()
交互模式下默认不触发?从很多方面来看,这似乎都是更好的选择。
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)
with str()
,我仍然会得到[0, 4, 5]
即使它们是不同的类型。和repr()
, 然而,str(mylist)
将打印为'[0, 4, 5]'
这更有可能是我正在寻找的。使用解释器的人可能正在测试某些东西或调试某些东西,他想知道这是一个字符串,而不是一个真正的列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)