print
,object
和repr()
之间有什么区别?
为什么要以不同的格式打印?
请参阅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'
答案 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'
关于print
,str
和repr
:print
打印给定的字符串,没有其他引号,而str
将创建来自给定对象的字符串(在本例中为字符串本身),repr
从对象创建“表示字符串”(即字符串)包括一组引号)。简而言之,str
和repr
之间的区别应该是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()内置函数和print语句调用,以计算对象的“非正式”字符串表示形式。 这与__repr __()的不同之处在于它不必是有效的Python表达式:可以使用更方便或简洁的表示。
我强调的重点。
答案 2 :(得分:0)
__str__
和__repr__
都是获取对象的字符串表示的方法。 __str__
应该更短,更易于使用,而__repr__
应该提供更多详细信息。
但是,在 python 中,单引号和双引号之间存在无差异。