__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() 给出了非正式的表示,该表示可能是可读的,但可能并不总是明确的。

更新于: 30-Jul-2019

154 次浏览

开启您的职业生涯

完成课程并获得认证

开始
广告