Python中 str 和 repr 有什么区别?
Python内置函数repr()和str()分别调用object.repr(self)和object.str(self)方法。第一个函数计算对象的官方表示,而第二个函数返回对象的非正式表示。
对于整数对象,这两个函数的结果是相同的。
>>> x = 1
>>> repr(x)
'1'
>>> str(x)
'1'
然而,对于字符串对象不是这种情况。
>>> x = "Hello"
>>> repr(x)
"'Hello'"
>>> str(x)
'Hello'
字符串对象的repr()返回值可以通过eval()函数求值,并且结果为有效的字符串对象。但是,str()的结果不能被求值。
>>> y1 = repr(x)
>>> eval(y1)
'Hello'
>>> y2 = str(x)
>>> eval(y2)
NameError: name 'Hello' is not defined
总结一下:repr()返回对象的默认和明确的表示,而str()给出的是一个可能可读但不一定明确的非正式表示。
阅读更多:Python 教程