python 2.7.5中的str()vs repr()函数

时间:2013-10-12 06:49:00

标签: python string python-2.7 repr

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()

所以我想知道以下

  1. 我应该何时使用repr(),何时应该使用str()
  2. 在哪些情况下,我可以使用其中任何一种?
  3. repr()哪些repr()不能做什么?
  4. str()哪些{{1}}不能做什么?

1 个答案:

答案 0 :(得分:30)

  

我何时应该使用str(),何时应该使用repr()?

在为最终用户创建输出时,几乎总是使用str()

repr()主要用于调试和探索。例如,如果您怀疑字符串中包含非打印字符,或者浮点数有较小的舍入错误,repr()将显示给您; str()可能不会。

repr()也可用于生成要粘贴到源代码中的文字。它也可以用于持久性(使用ast.literal_evaleval),但这不是一个好主意 - 如果你想要可编辑的持久化值,像JSON或YAML更好,如果你不打算编辑它们,使用泡菜。

  

2.在哪些情况下我可以使用其中任何一种?

嗯,你可以几乎在任何地方使用它们。除非如上所述,否则不应通常使用它们。

  

3. str()不能repr()做什么?

为您提供适合最终用户消费的输出 - 并非总是如此(例如,str(['spam','eggs'))可能不是您想要放入GUI中的任何内容),但更常见比repr()

  

4. repr()哪些str()不能

为您提供对调试有用的输出 - 再次,并非总是(用户创建的类的实例的默认值很少有用),但只要有可能。

有时候会给你输出一个有效的Python文字或其他表达式 - 但除了交互式探索之外,你很少想依赖它。