通过实例了解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抓取网页中的图片示例
Feb 28 Python
python实现保存网页到本地示例
Mar 16 Python
使用Python编写简单的画图板程序的示例教程
Dec 08 Python
详解Python中的Descriptor描述符类
Jun 14 Python
详解python3百度指数抓取实例
Dec 12 Python
numpy中的高维数组转置实例
Apr 17 Python
python实现俄罗斯方块游戏
Mar 25 Python
解决python中使用PYQT时中文乱码问题
Jun 17 Python
pandas.cut具体使用总结
Jun 24 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
利用python实现汉诺塔游戏
Mar 01 Python
一文搞懂python异常处理、模块与包
Jun 26 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
yii框架builder、update、delete使用方法
2014/04/30 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
JS中实现隐藏部分姓名或者电话号码的代码
2018/07/17 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
微信小程序在其他页面监听globalData中值的变化
2019/07/15 Javascript
jquery将信息遍历到界面上实例代码
2020/01/21 jQuery
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
用Python读取几十万行文本数据
2018/12/24 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
python反转列表的三种方式解析
2019/11/08 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
大学生党课思想汇报
2013/12/29 职场文书
双语教学实施方案
2014/03/23 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
升职自我推荐信范文
2015/03/25 职场文书
同学聚会祝酒词
2015/08/10 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers