通过实例了解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中pycurl库的用法实例
Sep 30 Python
python使用分治法实现求解最大值的方法
May 12 Python
Pandas中把dataframe转成array的方法
Apr 13 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
python队列Queue的详解
May 10 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
python opencv 批量改变图片的尺寸大小的方法
Jun 28 Python
python 获取sqlite3数据库的表名和表字段名的实例
Jul 17 Python
python实现ip地址查询经纬度定位详解
Aug 30 Python
Python partial函数原理及用法解析
Dec 11 Python
python pyhs2 的安装操作
Apr 07 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 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加密函数 Javascript/Js 解密函数
2013/09/23 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
PHP文件上传类实例详解
2016/04/08 PHP
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
jQuery通过ajax方法获取json数据不执行success的原因及解决方法
2016/10/15 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
python如何实现int函数的方法示例
2018/02/19 Python
python简易远程控制单线程版
2018/06/20 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
Python面向对象进阶学习
2019/05/21 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
安全检查管理制度
2014/02/02 职场文书
党校学习自我鉴定
2014/02/24 职场文书
工程安全员岗位职责
2014/03/09 职场文书
劲霸男装广告词
2014/03/21 职场文书
应届生求职信范文
2014/05/26 职场文书
少先队活动总结
2014/08/29 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
党员个人党性分析材料
2014/12/18 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
齐云山导游词
2015/02/06 职场文书
医院合作意向书范本
2015/05/08 职场文书
校运会班级霸气口号
2015/12/24 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android