通过实例了解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 22 Python
简单解析Django框架中的表单验证
Jul 17 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python生成器以及应用实例解析
Feb 08 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
详解Python:面向对象编程
Apr 10 Python
python实现日志按天分割
Jul 22 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 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实现百度网盘图片直链的代码分享
2012/11/01 PHP
php数组编码转换示例详解
2014/03/11 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
python中的常量和变量代码详解
2018/07/25 Python
python全栈知识点总结
2019/07/01 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
2019/09/25 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
机关门卫制度
2014/02/01 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
暑期政治学习心得体会
2014/09/02 职场文书
殡葬服务心得体会
2014/09/11 职场文书
公司股东合作协议书
2014/09/14 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
JS数组的常用方法整理
2021/03/31 Javascript
CSS3 Tab动画实例之背景切换动态效果
2021/08/23 HTML / CSS