通过实例了解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 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
Python Web框架Tornado运行和部署
Oct 19 Python
python实现逻辑回归的方法示例
May 02 Python
python flask实现分页效果
Jun 27 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
Python实现字符串反转的常用方法分析【4种方法】
Sep 30 Python
利用pandas读取中文数据集的方法
Jul 25 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
Python新手如何理解循环加载模块
May 29 Python
pytorch 如何使用float64训练
May 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
php源码的使用方法讲解
2019/09/26 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
面包屑导航详解
2017/12/07 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
elementui更改el-dialog关闭按钮的图标d的示例代码
2020/08/04 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
python中循环语句while用法实例
2015/05/16 Python
Django中使用group_by的方法
2015/05/26 Python
python开发之thread实现布朗运动的方法
2015/11/11 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python远程连接MySQL数据库
2019/04/19 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
枚举与#define宏的区别
2014/04/30 面试题
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
幼儿园保育员辞职信
2014/01/12 职场文书
体育课外活动总结
2014/07/08 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
Redis性能监控的实现
2021/07/09 Redis
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS