用__repr __()

时间:2016-02-16 09:21:59

标签: python repr

printobjectrepr()之间有什么区别? 为什么要以不同的格式打印?

请参阅output difference

>>> x="This is New era"
>>> print x             # print in double quote when with print()
This is New era

>>> x                   #  x display in single quote
'This is New era'

>>> x.__repr__()        # repr() already contain string
"'This is New era'"

>>> x.__str__()         # str() print only in single quote ''
'This is New era'

3 个答案:

答案 0 :(得分:6)

'"之间没有语义差异。如果字符串包含',则可以使用",反之亦然,Python也会这样做。如果字符串包含两者,则必须转义其中一些(或使用三引号,"""''')。 (如果'"都可能,那么Python和许多程序员似乎更喜欢'。)

>>> x = "string with ' quote"
>>> y = 'string with " quote'
>>> z = "string with ' and \" quote"
>>> x
"string with ' quote"
>>> y
'string with " quote'
>>> z
'string with \' and " quote'

关于printstrreprprint 打印给定的字符串,没有其他引号,而str创建来自给定对象的字符串(在本例中为字符串本身),repr 从对象创建“表示字符串”(即字符串)包括一组引号)。简而言之,strrepr之间的区别应该是str易于理解 并且repr易于理解 for Python

此外,如果在交互式shell中输入任何表达式,Python将自动回显结果的repr。这可能有点令人困惑:在交互式shell中,当您执行print(x)时,您看到的内容是str(x);当您使用str(x)时,您看到的是repr(str(x)),当您使用repr(x)时,您会看到repr(repr(x))(因此是双引号)。

>>> print("some string") # print string, no result to echo
some string
>>> str("some string")   # create string, echo result
'some string'
>>> repr("some string")  # create repr string, echo result
"'some string'"

答案 1 :(得分:1)

请参阅__repr__

  

由repr()内置函数和字符串转换(反向引号)调用,以计算对象的“官方”字符串表示形式。 如果可能的话,这应该看起来像一个有效的Python表达式,可用于重新创建具有相同值的对象(给定适当的环境)。

__str__

  

由str()内置函数和print语句调用,以计算对象的“非正式”字符串表示形式。 这与__repr __()的不同之处在于它不必是有效的Python表达式:可以使用更方便或简洁的表示。

我强调的重点。

答案 2 :(得分:0)

__str____repr__都是获取对象的字符串表示的方法。 __str__应该更短,更易于使用,而__repr__应该提供更多详细信息。

但是,在 python 中,单引号和双引号之间存在无差异