python中str()和repr()函数的区别
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>
writeline和write的区别python4 >>> print(a)
5 <__main__.test object at 0x000001BB1BD228D0>
6 >>>
不管我们是输⼊对象还是print(对象),返回的都是对象的内存地址
对于⽅法__str__:
1 >>> class test():
2def__str__(self):
3return"你好"
4
5
6 >>> a=test()
7 >>> a
8 <__main__.test object at 0x000001BB1BD22860>
9 >>> print(a)
10你好
11 >>>
如果我们在终端中输⼊对象,会返回对象的内存地址,使⽤print则会⾃动调⽤⽅法__str__
对于⽅法__repr__:
1 >>> class test():
2def__repr__(self):
3return"你好"
4
5 >>> a=test()
6 >>> a
7你好
8 >>> print(a)
9你好
10 >>>
如果我们在终端中输⼊对象,使⽤print都会⾃动调⽤⽅法__repr__
通常,程序员会在开发时,使⽤__repr__来返回⼀些关键性的信息便于调试。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。