通过实例了解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中numpy数组的合并实例讲解
Apr 04 Python
深入浅析python 中的匿名函数
May 21 Python
Python wxPython库消息对话框MessageDialog用法示例
Sep 03 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
对python GUI实现完美进度条的示例详解
Dec 13 Python
Python中那些 Pythonic的写法详解
Jul 02 Python
django解决订单并发问题【推荐】
Jul 31 Python
python实现一个点绕另一个点旋转后的坐标
Dec 04 Python
python 在threading中如何处理主进程和子线程的关系
Apr 25 Python
浅谈TensorFlow之稀疏张量表示
Jun 30 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 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 array_multisort()函数的使用札记
2011/07/03 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
vue+swiper实现侧滑菜单效果
2017/12/28 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
python线程锁(thread)学习示例
2013/12/04 Python
python实现的简单抽奖系统实例
2015/05/22 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
详解Python3 pickle模块用法
2019/09/16 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
python 装饰器的使用示例
2020/10/10 Python
Weblogc domain问题
2014/01/27 面试题
SQL数据库笔试题
2016/03/08 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
大学生的四年学习自我评价
2013/12/13 职场文书
质量承诺书怎么写
2014/05/24 职场文书
企业承诺书怎么写
2014/05/24 职场文书
土地转让协议书
2014/09/27 职场文书
创先争优活动个人总结
2015/03/04 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
Python开发五子棋小游戏
2022/05/02 Python