Python中str()与repr()函数的区别

from:https://www.jianshu.com/p/2a41315ca47e

在 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__ 方法。

转载于:https://www.cnblogs.com/bonelee/p/11251946.html

Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用...相关推荐

  1. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  2. python中str是什么函数_python里的str是什么函数

    python里的str是什么函数 发布时间:2020-05-18 11:39:40 来源:亿速云 阅读:280 作者:小新 今天小编给大家分享的是python里的str是什么函数,相信很多人都不太了解 ...

  3. python中的方法和函数的区别_Python中函数和方法的区别

    在Python中函数和方法是有区别的. 区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中. 区别二定义的方式: 1.函数定义的方式 def关键字  然后接函数名 再是 ...

  4. python中协程与函数的区别_深入浅析python 协程与go协程的区别

    进程.线程和协程 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定义: 操作系统能够进行运算调度的最小单位.它被包含在进 ...

  5. python中协程与函数的区别_python 协程与go协程的区别

    进程.线程和协程 进程的定义: 进程,是计算机中已运行程序的实体.程序本身只是指令.数据及其组织形式的描述,进程才是程序的真正运行实例. 线程的定义: 操作系统能够进行运算调度的最小单位.它被包含在进 ...

  6. isdigit php,python中str内置函数isdigit、isdecimal、isnumeric的区别

    isdigit.isdecimal.isnumeric的区别 isdecimal(...) | S.isdecimal() -> bool | | Return True if there ar ...

  7. python中str是什么函数_Python str()函数

    描述 str函数是Python的内置函数,它将参数转换成字符串类型,即人适合阅读的形式. 语法 str(object) 名称说明备注 object待被转换成字符串的参数可省略的参数 返回值:返回obj ...

  8. python中协程与函数的区别_python协程和异步IO

    1.并发.并行.同步.异步.阻塞.非阻塞 并发:是指在同一个时间段内,有几个程序都处于启动运行到运行结束之间 并行:在同一个时间点上,有几个程序同时运行 同步:当一个同步操作发出去后,调用者一直等待返 ...

  9. python中str是什么函数_python str函数怎么用

    展开全部 是将一个2113对象转成字符串显示5261,注意只是显示用,有些对象4102转成字符串没有直1653接的意思. str():将变量转化为字符串类型 a = 1 b = [1, 2, 3] s ...

最新文章

  1. php设计是什么意思,php的设计模式是什么
  2. 低调!中国北斗核心卫星部署完成,开启“全球时代”!超越GPS指日可待
  3. 淘宝网商品库优化实践访谈
  4. ultraedit 运行的是试用模式_Wings面向企业级的单元测试用例自动编码引擎
  5. [转]jquery的一个模板引擎-zt
  6. 如何用Netty实现一个轻量级的HTTP代理服务器
  7. 推荐几个干货超多助你成长的前端大佬
  8. C# 对Ini文件操作(C# ini文件操作类)
  9. Adobe Acrobat DC
  10. java 转化为utc的时间_我6年时间成长为阿里Java架构师,你呢(附学习路线图)...
  11. 华为官方推特直接开骂@苹果,负责人称:被盗号了
  12. mysql 知识_关于mysql基础知识的介绍
  13. CCF 2013-12-1 出现次数最多的数
  14. 华为p20nfc怎么复制门禁卡_华为P20手机来刷门禁_如何给P20手机添加绑定门禁卡的方法...
  15. mtklog结构及分析
  16. 全网史上最全的AR学习开发资源汇总(转载他人整理作品,供参考)
  17. 2021牛客训练营 F.魏迟燕的自走棋(贪心并查集)
  18. matlab 统计数组频数_matlab统计 频数、频率和累积频率
  19. 下载spotify音乐_如何将Google Maps音乐控件用于Spotify,Apple Music或Google Play音乐
  20. 轿子vs.小汽车和电话vs.跟班

热门文章

  1. ajax post请求怎么传参_ajax用post方法传递参数
  2. mysql max和order by_mysql – 为什么MAX()比ORDER BY慢100倍… LIMIT 1?
  3. 南华大学计算机学院足球队,球场健儿,不言放弃——记南华大学“新生杯”足球赛...
  4. oracle 怎么创建约束,Oracle创建约束
  5. mysql获取两个表中日期字段的最小差值
  6. 多人合作开发的标准制定
  7. 机器学习(MACHINE LEARNING)灰色关联分析(GRA)
  8. 【Web安全】Weak Session IDs (弱会话IDs)-burp进行Cookie劫持
  9. 名片去噪识别-aip
  10. python爬虫动态加载页面_python3的爬虫笔记8——动态加载页面爬虫