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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。