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()
哪些{{1}}不能做什么?答案 0 :(得分:30)
我何时应该使用str(),何时应该使用repr()?
在为最终用户创建输出时,几乎总是使用str()
。
repr()
主要用于调试和探索。例如,如果您怀疑字符串中包含非打印字符,或者浮点数有较小的舍入错误,repr()
将显示给您; str()
可能不会。
repr()
也可用于生成要粘贴到源代码中的文字。它也可以用于持久性(使用ast.literal_eval
或eval
),但这不是一个好主意 - 如果你想要可编辑的持久化值,像JSON或YAML更好,如果你不打算编辑它们,使用泡菜。
2.在哪些情况下我可以使用其中任何一种?
嗯,你可以几乎在任何地方使用它们。除非如上所述,否则不应通常使用它们。
3.
str()
不能repr()
做什么?
为您提供适合最终用户消费的输出 - 并非总是如此(例如,str(['spam','eggs'))可能不是您想要放入GUI中的任何内容),但更常见比repr()
。
4.
repr()
哪些str()
不能
为您提供对调试有用的输出 - 再次,并非总是(用户创建的类的实例的默认值很少有用),但只要有可能。
有时候会给你输出一个有效的Python文字或其他表达式 - 但除了交互式探索之外,你很少想依赖它。