Python中 __str__ 和 __repr__ 有什么区别?

Python中 strrepr 有什么区别?

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 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程