本文讨论两个问题:1.repr()与str()的区别;2.repr()的还原
首先,我们先来看一段代码,在代码中我们来具体感受repr()和str()这两个函数的区别。
rper()函数会将参数转化为解释器读取的形式,就是说repr()将参数转化的字符串是给电脑看的;而str()函数则转化的字符串是给人看的。所以看对于s1和s2,repr()的输出要比str()多个双引号,就是repr()对电脑说,有一个字符串(双引号),它是‘Good good study,day day up! ’(对于s1,因为'\'需要在字符串里表现出'\'的形式,所以在\前面还有\);而str()则对我们说,有一个字符串,里面的内容是Good good study,day day up! 。而如果输入的参数是没有适于人阅读的形式的话,两者会返回同样的值,如元组,列表和字典。
总而言之一句,repr()可以将参数转化为能让电脑读取的字符串形式,而repr()与str()对字符型和浮点型的参数处理后返回的值不同,而对整型,列表等类型则可以返回相同的值。
接着说说repr()的还原,其实很简单:(object) = eval(repr(object)),也就是说用eval()函数可以将repr()的处理后结果变为处理前结果。