看官方文档无非就是说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