repr() 对比str()Python

str() 和 repr() 都用来表示string对象。
str () 的例子:

s = 'Hello, Geeks.'
print str(s) 
print str(2.0/11.0) 


Output:
Hello, Geeks.
0.181818181818

repr()的例子:


s = 'Hello, Geeks.'
print repr(s) 
print repr(2.0/11.0) 
Output:

'Hello, Geeks.'
0.18181818181818182

从上面的输出中,我们可以看出如果我们使用了repr()函数,然后它输出一了一对引号和如果我们计算了值我们会得到一个给更加准确的结果。

下面是差异:

  • str()用于创建一个输出给终端对象,而repr()主要用来测试和开发,repr的目标是让它更清楚明白,然后str的目标是让它可读性更好。对于上面的例子,如果我们假定了一个浮点数有小舍入误差,
    repr可以显示出来,而str不会。
  • repr()计算对象的“正式”字符串表示(包含关于对象的所有信息的表示),str()用于计算对象的“非正式”字符串表示(用于打印对象的表示)。
  • print语句和str()内联函数使用__str__去展示一个string的表示对于一个object而while内部函数使用__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)      


Output:
2016-02-22 19:32:04.078030
datetime.datetime(2016, 2, 22, 19, 32, 4, 78030)

str()以用户能够理解日期和时间的方式显示今天的日期。
repr()打印日期-时间对象的“官方”表示(意味着使用“官方”字符串表示可以重构对象)。

如何让它们作用于我们自己定义的类呢?

如果我们需要调试的详细信息,用户定义的类也应该有一个_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) 
Output:

10 + i20
Rational(10, 20)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值