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() 输出
- >>> obj = 'I love Python'
- >>> obj==eval(repr(obj))
- True
- >>> obj == eval(str(obj))
- Traceback (most recent call last):
- File "", line 1, in
- File "", line 1
- I love Python
- ^
- SyntaxError: invalid syntax
repr() 函数 (python3 中):
- >>> repr([0,1,2,3])
- '[0, 1, 2, 3]'
- >>> repr('Hello')
- "'Hello'"
- >>> str(1.0/7.0)
- '0.14285714285714285'
- >>> repr(1.0/7.0)
- '0.14285714285714285'
对比:
- >>> repr('hello')
- "'hello'"
- >>> str('hello')
- 'hello'
对于一般情况:
- >>> a=test()
- >>> a
- <__main__.test object at 0x000001BB1BD228D0>
- >>> print(a)
- <__main__.test object at 0x000001BB1BD228D0>
- >>>
不管我们是输入对象还是 print(对象), 返回的都是对象的内存地址
对于方法__str__:
- >>> class test():
- def __str__(self):
- return "你好"
- >>> a=test()
- >>> a
- <__main__.test object at 0x000001BB1BD22860>
- >>> print(a)
你好
>>>
如果我们在终端中输入对象, 会返回对象的内存地址, 使用 print 则会自动调用方法__str__
对于方法__repr__:
- >>> class test():
- def __repr__(self):
- return "你好"
- >>> a=test()
- >>> a
你好
>>> print(a)
你好
>>>
如果我们在终端中输入对象, 使用 print 都会自动调用方法__repr__
通常, 程序员会在开发时, 使用__repr__来返回一些关键性的信息便于调试.
来源: http://www.bubuko.com/infodetail-3285194.html