通过实例了解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 修改文件指定行的方法
May 15 Python
Python使用functools模块中的partial函数生成偏函数
Jul 02 Python
python 文件操作api(文件操作函数)
Aug 28 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
django迁移数据库错误问题解决
Jul 29 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
记一次Django响应超慢的解决过程
Sep 17 Python
python 爬取小说并下载的示例
Dec 07 Python
python给list排序的简单方法
Dec 10 Python
关于的python五子棋的算法
May 02 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
php限制文件下载速度的代码
2015/10/20 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
jQuery 性能优化指南(2)
2009/05/21 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
Python矩阵常见运算操作实例总结
2017/09/29 Python
Python subprocess库的使用详解
2018/10/26 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python实现静态web服务器
2019/09/03 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
Python求两个字符串最长公共子序列代码实例
2020/03/05 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
元宵晚会主持词
2014/03/25 职场文书
教师研修随笔感言
2015/11/18 职场文书