通过实例了解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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
python多线程并发让两个LED同时亮的方法
Feb 18 Python
Python使用paramiko操作linux的方法讲解
Feb 25 Python
Python Pandas 箱线图的实现
Jul 23 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
python 下划线的不同用法
Oct 24 Python
python 基于selectors库实现文件上传与下载
Dec 31 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
2012/06/21 PHP
php日期操作技巧小结
2016/06/25 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
深入理解js中this的用法
2016/05/28 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
详解python websocket获取实时数据的几种常见链接方式
2019/07/01 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
2014年单位法制宣传日活动总结
2014/11/01 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python