repr是对python解释器友好的,就是会以合法的python表达式的形式来表示值,返回一个可以用来表示对象的可打印字符串。
官方解释:
Python 手册:
Return a string containing a printable representation of an object.
返回一个用来表示可打印对象的字符串。
This is the same value yielded by conversions (reverse quotes).
这是一个通过转换产生的字符串值(并且这个值是引用双引号的)。
It is sometimes useful to be able to access this operation as an ordinary function.
有时它很有用,能够作为一个普通函数来操作。
For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(),
对于很多类型,这个函数首先会尝试返回一个字符串值,并且把这个字符串值传给eval()方法时它将产生带有同样值的python对象(也就是说,obj=eval(repr(obj)))。
otherwise the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object.
否则生成用尖括号包住的字符串,包含这个对象的类型名和一些额外的信息(比如这个对象的地址)。
A class can control what this function returns for its instances by defining a repr() method.
一个类可以通过定义repr()方法,来控制这个类实例通过这个函数的返回值。(这句翻译有点晦涩,我的了解就是,就相当于java里面定义的tostring()方法,一个类的实例对象,如果想转化为字符串形式,这个类就必须定义或者说重写repr()方法)
(特别指明,别人的解释是:一个类(class)可以通过 __repr__() 成员来控制repr()函数作用在其实例上时的行为。由于刚刚学习python,对于__repr__()我还不是很清楚,后面需要进一步理解)
str是对用户友好的,返回一个可以用来表示对象的可打印的友好的字符串
Python 手册:
Return a string containing a nicely printable representation of an object.
返回一个表示对象的可打印的友好的字符串值。
For strings, this returns the string itself.
对于字符串类型,通过这个函数返回它本身。
The difference withrepr(object) is that str(object) does not always attempt to return a string that is acceptable to eval();
不同于repr()函数的是这个函数经常不会尝试返回一个可以传递给eval()函数的字符串(也就是会报错:NameError: name ‘xxx‘ is not defined,不是标准字符串形式,eval函数会把它当成未定义变量)。
its goal is to return a printable string.
这个函数的目标是返回可以答应的字符串,就是对用户看着比较友好的。
If no argument is given, returns the empty string, .
如果没有给这个函数传入参数的话,返回一个空字符串。
>>> repr(100) ‘100‘ >>> str(100) ‘100‘ >>> repr("aaa") "‘aaa‘" >>> str("aaaa") ‘aaaa‘ >>> print(repr(1000)) 1000 >>> print(str(1000)) 1000 >>> print(repr("bbbbb")) ‘bbbbb‘ >>> print(str("bbbb")) bbbb
从上面执行的结果,可以看出来,这两个函数返回的本身都是字符串。再进行打印时可以看出,str返回的是对用户更友好的字符串,但是repr返回的呢则依旧是符合python表达式规则的字符串表达形式。
=========================未完待续....