在Python中,`str()`和`repr()`都是用来将某一类型的变量或者常量转换为字符串对象的方法¹²⁴。然而,它们的目标和使用场景有所不同:
- `str()`主要面向用户,其目的是可读性,返回形式为用户友好性和可读性都较强的字符串类型³。例如,当我们把一个字符串传给`str()`函数再打印到终端的时候,输出的字符不带引号²。
- `repr()`面向的是Python解释器,或者说开发人员,其目的是准确性,其返回值表示Python解释器内部的含义,常作为编程人员debug用途³。例如,将一个字符串传给`repr()`函数再打印到终端的时候,输出的字符带有引号²。
如果你想要自定义类的实例能够被`str()`和`repr()`所调用,那么就需要在自定义类中重载`__str__`和`__repr__`方法²。这样,当你打印一个对象的时候,Python会调用这个对象的`__str__`方法;当你使用`repr()`函数或者在终端直接查看对象的时候,Python会调用这个对象的`__repr__`方法¹。
总的来说,`str()`的可读性更强,而`repr()`的返回结果更具有准确性,更加的适合开发和调试阶段使用¹²³⁴。希望这个解释对你有所帮助!
源: 与必应的对话, 2023/12/2
(1) 浅谈python中__str__和__repr__的区别 - bokexiaoneng - 博客园. https://www.cnblogs.com/xiaoneng/p/11699633.html.
(2) Python中str()与repr()函数的区别 - 简书. https://www.jianshu.com/p/2a41315ca47e.
(3) Python中str()和repr()函数的区别 - 純黑色 - 博客园. https://www.cnblogs.com/xhyan/p/8404318.html.
(4) 3.16. 深入理解 str() 和 repr() 的区别 — Python笔记 文档. https://www.osgeo.cn/python-tutorial/basic-improvement-str-vs-repr.html.