【发布时间】:2013-10-20 07:36:08
【问题描述】:
python 2.7.5 中str() 和repr() 函数有什么区别?
python.org 上的解释:
str()函数旨在返回相当人类可读的值的表示,而repr()旨在生成 可以解释器读取的表示(如果没有等效语法,则强制使用SyntaxError)
但我并不清楚。
一些例子:
>>> s = 'Hello, world.'
>>> str(s)
'Hello, world.'
>>> repr(s)
"'Hello, world.'" # repr is giving an extra double quotes
>>> str(1.0/7.0)
'0.142857142857'
>>> repr(1.0/7.0)
'0.14285714285714285' # repr is giving value with more precision
所以我想知道以下内容
- 什么时候应该使用
str(),什么时候应该使用repr()? - 在哪些情况下我可以使用其中任何一个?
-
str()可以做什么repr()不能? -
repr()可以做什么str()不能?
【问题讨论】:
-
repr应返回评估为此类对象的 Python“对象表示”(如果适用)。这就是为什么在使用repr时引用字符串的原因:所以eval(repr(someStr)) == someStr应该为真(它也可以很好地转义不可打印和控制字符)。它(repr和 reprlib)对于 debugging 和 exploring 对象很有用,但通常不应用于最终用户输出。 -
请注意,当您在解释器中键入 str(s) 时,它会打印出 repr(str(s)),因为解释器会显示您键入的任何表达式的 repr。
print str(s)和print repr(s)你可能会发现它更有启发性。 -
请注意,在您的数字示例中,
repr()可能会为您提供更高的精度,但不一定是更高的精度。它确实显示了更多的数字,但由于典型的浮点限制,str()显示的值可能会更好。比较repr(sum(0.1 for i in range(9)))和str(sum(0.1 for i in range(9)))。另一方面,str()会向你隐藏固有的不准确性,这让那些想知道为什么sum(0.1 for i in range(9)) == 0.9返回False... -
@hcwhsa 我不明白为什么我的问题是重复的。我看到了你给出的链接。但是那里的解释是使用类自己给出的。我是python的绝对初学者。我什至不明白。我的疑问在于功能,我清楚地解释了它。所以你能重新考虑我的问题吗?
标签: python string python-2.7 repr