python中str()与repr()区别

  看官方文档无非就是说str是友好的,但不正式,repr比较官方。别的咋就不从而知了!

  直接上代码:

 1 In [68]: import datetime
 2 
 3 In [69]: today = datetime.datetime.now()
 4 
 5 In [70]: str(today)
 6 Out[70]: '2014-03-22 17:44:48.975809'
 7 
 8 In [71]: repr(today)
 9 Out[71]: 'datetime.datetime(2014, 3, 22, 17, 44, 48, 975809)'
10 
11 In [72]: eval(str(today))
12   File "<string>", line 1
13     2014-03-22 17:44:48.975809
14                 ^
15 SyntaxError: invalid syntax
16 
17 
18 In [73]: eval(repr(today))
19 Out[73]: datetime.datetime(2014, 3, 22, 17, 44, 48, 975809)

看出了什么了吧。即如果用str处理的日期,确实对一般人比较友好,直观,都能看懂,而用repr处理,就不那么友好了。但它好处也显而易见,这也是网上大多没说到点上的一个地方,此时虽然也转成了字符,但是eval调用是没问题的,直接再给转成对象了,而用str处理的字符串是不可以通过eval转过来的,因为python解释器是不认识的。我想这大概就是俩者最重要的区别,也就是“非官方”跟“官方”的区别吧

  参考:

 http://satyajit.ranjeev.in/2012/03/14/python-repr-str.html