通过实例了解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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
从零学Python之入门(四)运算
May 27 Python
Python实现批量修改文件名实例
Jul 08 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Python编程中装饰器的使用示例解析
Jun 20 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
Feb 15 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 Python
Python中的socket网络模块介绍
Jul 23 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
php cookie 登录验证示例代码
2009/03/16 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
Js组件的一些写法
2010/09/10 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
AngularJS语法详解
2015/01/23 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
jQuery实现伸展与合拢panel的方法
2015/04/30 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python多线程http下载实现示例
2013/12/30 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
浅谈django channels 路由误导
2020/05/28 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
什么是Web Service?
2012/07/25 面试题
体育教师工作总结的自我评价
2013/10/10 职场文书
店长助理岗位职责
2013/12/13 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
普通话宣传标语
2014/06/26 职场文书
出纳工作检讨书
2014/10/18 职场文书
情人节活动总结范文
2015/02/05 职场文书
圣诞晚会主持词
2015/07/01 职场文书