str()和repr()都用於獲取對象的字符串表示形式。
- str()的示例:
s = 'Hello, Geeks.' print str(s) print str(2.0/11.0)
輸出:
Hello, Geeks. 0.181818181818
- repr()的示例:
s = 'Hello, Geeks.' print repr(s) print repr(2.0/11.0)
輸出:
'Hello, Geeks.' 0.18181818181818182
。
從上麵的輸出中,我們可以看到是否使用repr()函數打印字符串,然後使用一對引號打印字符串,並且如果我們計算值,則得到的值比str()函數更精確。
以下是區別:
- str()用於為最終用戶創建輸出,而repr()主要用於調試和開發。 repr的目標是明確明確,str的可讀性。例如,如果我們懷疑浮點數的舍入誤差較小,則repr將向我們顯示,而str則可能沒有。
- repr()計算對象的“official”字符串表示形式(具有有關對象的所有信息的表示形式),而str()用於計算對象的“informal”字符串表示形式(對打印對象有用)。
- 打印語句和str() 內置函數使用__str__顯示對象的字符串表示形式,而repr() 內置函數使用__repr__顯示對象。
讓我們通過一個例子來理解這一點:
import datetime
today = datetime.datetime.now()
# Prints readable format for date-time object
print str(today)
# prints the official format of date-time object
print repr(today)
輸出:
2016-02-22 19:32:04.078030 datetime.datetime(2016, 2, 22, 19, 32, 4, 78030)
str()以用戶可以理解日期和時間的方式顯示今天的日期。
repr()打印日期時間對象的“official”表示形式(意味著使用“official”字符串表示形式,我們可以重建該對象)。
如何使它們適用於我們自己定義的類?
如果我們需要調試的詳細信息,則用戶定義的類也應具有__repr__。而且,如果我們認為為用戶提供字符串版本會很有用,則可以創建__str__函數。
# Python program to demonstrate writing of __repr__ and
# __str__ for user defined classes
# A user defined class to represent Complex numbers
class Complex:
# Constructor
def __init__(self, real, imag):
self.real = real
self.imag = imag
# For call to repr(). Prints object's information
def __repr__(self):
return 'Rational(%s, %s)' % (self.real, self.imag)
# For call to str(). Prints readable form
def __str__(self):
return '%s + i%s' % (self.real, self.imag)
# Driver program to test above
t = Complex(10, 20)
print str(t) # Same as "print t"
print repr(t)
輸出:
10 + i20 Rational(10, 20)
相關用法
注:本文由純淨天空篩選整理自 str() vs repr() in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。