通过实例了解Python str()和repr()的区别


Posted in Python onJanuary 17, 2020

这篇文章主要介绍了通过实例了解Python str()和repr()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

区别

其实用处就是最大的区别了:str()主要用来为终端用户输出一些信息,而repr()主要用来调试;同时后者的目标是为了消除一些歧义(例如浮点数的精度问题),前者主要为了可读。

使用

In [12]: s = 'abc'
In [13]: print(str(s))
abc
In [14]: print(2.0/11)
0.18181818181818182
In [15]: repr(s)
Out[15]: "'abc'"
In [16]: repr(2.0/11)
Out[16]: '0.18181818181818182'

仔细看一下,其实并没产生精度上的不同;但是当在Python2中就会发现区别了:

>>> eval('2.0/11')
0.18181818181818182
>>> print(2.0/11)
0.181818181818

所以换个例子:

In [17]: import datetime

In [18]: n = datetime.datetime.now()

In [19]: print(str(n)
  ...: )
2020-01-16 09:22:13.361995

In [20]: repr(n)
Out[20]: 'datetime.datetime(2020, 1, 16, 9, 22, 13, 361995)'

可以看到前者可读性更好,后者打印出来了类型和值,更适合调试;

实现

二者都通过内置函数实现;看看官方文档说repr()

Return a string containing a printable representation of an object.

A class can control what this function returns for its instances by defining a __repr__() method.

意味着可以自定义这个函数,并实现自己的repr()(str同理),如下:

In [35]: class TestClass:
  ...:   def __init__(self, name, age):
  ...:     self.name = name
  ...:     self.age = age
  ...:   def __repr__(self):
  ...:     return 'repr: ' + self.name + ' ,' + self.age
  ...:   def __str__(self):
  ...:     return self.name + ' ,' + self.age
  ...:
  
In [38]: tt = TestClass('tony', '23')

In [39]: repr(tt)
Out[39]: 'repr: tony ,23'

In [40]: str(tt)
Out[40]: 'tony ,23'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 图片验证码代码分享
Jul 04 Python
使用python BeautifulSoup库抓取58手机维修信息
Nov 21 Python
Python有序字典简单实现方法示例
Sep 28 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python安装selenium包详细过程
Jul 23 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
python Kmeans算法原理深入解析
Aug 23 Python
Python 处理文件的几种方式
Aug 23 Python
10张动图学会python循环与递归问题
Feb 06 Python
Python中字符串对象语法分享
Feb 24 Python
python无序链表删除重复项的方法
Jan 17 #Python
Python实现投影法分割图像示例(一)
Jan 17 #Python
np.dot()函数的用法详解
Jan 17 #Python
python使用numpy实现直方图反向投影示例
Jan 17 #Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 #Python
python 计算方位角实例(根据两点的坐标计算)
Jan 17 #Python
Python autoescape标签用法解析
Jan 17 #Python
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
ie 调试javascript的工具
2009/04/29 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
JS实现为动态创建的元素添加事件操作示例
2018/03/17 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
python实现simhash算法实例
2014/04/25 Python
Python验证企业工商注册码
2015/10/25 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
竞选班干部演讲稿500字
2014/08/20 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
催款函范文
2015/06/24 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
选购到合适的激光打印机
2022/04/21 数码科技