__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 次瀏覽

開啟您的職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.