Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用
2023-09-14 09:11:51 时间
Python中str()与repr()函数的区别
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str()
或者 repr()
。
>>> a = 10
>>> type(str(a))
<class 'str'>
>>> type(repr(a))
<class 'str'>
但是这二者之间有什么区别呢?因为提供两个功能完全相同的内建函数是没有意义的。先看一个例子。
>>> print(str('123'))
123
>>> print(str(123))
123
>>> print(repr('123'))
'123'
>>> print(repr(123))
123
从例子中不难发现,当我们把一个字符串传给 str()
函数再打印到终端的时候,输出的字符不带引号。而将一个字符串传给 repr()
函数再打印到终端的时候,输出的字符带有引号。
造成这两种输出形式不同的原因在于:
print
语句结合str()
函数实际上是调用了对象的__str__
方法来输出结果。而print
结合repr()
实际上是调用对象的__repr__
方法输出结果。下例中我们用str
对象直接调用这两个方法,输出结果的形式与前一个例子保持一致。
>>> print('123'.__repr__())
'123'
>>> print('123'.__str__())
123
不过这个例子可能还是无法很好表达到底 str()
与 repr()
各有什么意义,我们再来看一个例子。
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(str(now))
2017-04-22 15:41:33.012917
>>> print(repr(now))
datetime.datetime(2017, 4, 22, 15, 41, 33, 12917)
通过 str()
的输出结果我们能很好地知道 now
实例的内容,但是却丢失了 now
实例的数据类型信息。而通过 repr()
的输出结果我们不仅能获得 now
实例的内容,还能知道 now
是 datetime.datetime
对象的实例。
因此 str()
与 repr()
的不同在于:
str()
的输出追求可读性,输出格式要便于理解,适合用于输出内容到用户终端。repr()
的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用。
另外如果想要自定义类的实例能够被 str()
和 repr()
所调用,那么就需要在自定义类中重载 __str__
和 __repr__
方法。
相关文章
- python skitlearn_Python sklearn
- python win32api messagebox_如何在Python中使用Win32 API?
- 如何在 Python 中使用断点调试
- python人工智能学习笔记_[Python] 人工智能与自然语言处理学习笔记(1)[通俗易懂]
- Python 入门指南第二节 | 使用 Python 解释器
- Python中通过PyPDF2实现PDF拆分「建议收藏」
- pytest的assert_Python断言
- 跟我一起学Python从入门到精通《第二章》
- 【说站】python中pdb有哪些调试命令
- 【说站】python正则表达式查找和替换内容
- pycharm添加库_pycharm自带python吗
- lambda表达式python_Python中的Lambda表达式「建议收藏」
- python attrs_Python attrs作用是什么?
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- Python实现冒泡排序
- python hexdump_笨办法学 Python · 续 练习 26:`hexdump`
- 利用世界杯,读懂 Python 装饰器
- 【Python】Python 变量 ( 变量定义 | 修改变量值 | 变量数据类型 | type 获取数据类型 )
- python-Python与MongoDB数据库-处理MongoDB查询结果
- Python开发系列课程(6) – 要不要使用复杂表达式详解编程语言
- python 视频教程大全下载地址详解编程语言
- 一步一步学会在Linux上运行Python程序(linux运行python程序)
- 在Linux上搭建Python开发环境(linux搭建python环境)
- Python结合MySQL的无缝搭配(pypymysql)
- python库——Turtle详解编程语言
- Python自定义异常类及用法
- Python Django框架是什么?
- 一步步学习:利用Python连接MySQL数据库(python连接mysql数据库)
- 如何在Linux中安装Python?(linux安装python)
- Python可爱的大小写
- python布尔操作实现代码
- 讲解python参数和作用域的使用
- python中使用OpenCV进行人脸检测的例子
- Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器