Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。
对于数值类型、列表类型,str和repr方法的处理是一致;而对于字符串类型,str和repr方法处理方式不一样。
repr()函数得到的字符串通常可以用来重新获得该对象,repr()的输入对python比较友好,适合开发和调试阶段使用。通常情况下obj==eval(repr(obj))这个等式是成立的。
>>> obj=\'I love Python\'
>>> obj==eval(repr(obj))
True而str()函数没有这个功能,str()函数适合print()输出
1 >>> obj = \'I love Python\' 2 >>> obj==eval(repr(obj)) 3 True 4 >>> obj == eval(str(obj)) 5 Traceback (most recent call last): 6 File "<stdin>", line 1, in <module> 7 File "<string>", line 1 8 I love Python 9 ^ 10 SyntaxError: invalid syntax
repr()函数(python3中):
1 >>> repr([0,1,2,3]) 2 \'[0, 1, 2, 3]\' 3 >>> repr(\'Hello\') 4 "\'Hello\'" 5 6 >>> str(1.0/7.0) 7 \'0.14285714285714285\' 8 >>> repr(1.0/7.0) 9 \'0.14285714285714285\'
对比:
1 >>> repr(\'hello\') 2 "\'hello\'" 3 >>> str(\'hello\') 4 \'hello\'
对于一般情况:
1 >>> a=test() 2 >>> a 3 <__main__.test object at 0x000001BB1BD228D0> 4 >>> print(a) 5 <__main__.test object at 0x000001BB1BD228D0> 6 >>>
不管我们是输入对象还是print(对象),返回的都是对象的内存地址
对于方法__str__:
1 >>> class test(): 2 def __str__(self): 3 return "你好" 4 5 6 >>> a=test() 7 >>> a 8 <__main__.test object at 0x000001BB1BD22860> 9 >>> print(a) 10 你好 11 >>>
如果我们在终端中输入对象,会返回对象的内存地址,使用print则会自动调用方法__str__
对于方法__repr__:
1 >>> class test(): 2 def __repr__(self): 3 return "你好" 4 5 >>> a=test() 6 >>> a 7 你好 8 >>> print(a) 9 你好 10 >>>
如果我们在终端中输入对象,使用print都会自动调用方法__repr__
通常,程序员会在开发时,使用__repr__来返回一些关键性的信息便于调试。