通过实例了解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的Django框架中TEMPLATES项的设置教程
May 29 Python
深入讲解Python中的迭代器和生成器
Oct 26 Python
python添加模块搜索路径方法
Sep 11 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
python 设置文件编码格式的实现方法
Dec 21 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
Python多继承原理与用法示例
Aug 23 Python
python版DDOS攻击脚本
Jun 12 Python
使用Python自动生成HTML的方法示例
Aug 06 Python
python中文分词库jieba使用方法详解
Feb 11 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
python异步的ASGI与Fast Api实现
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截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
百度留言本js 大家可以参考下
2009/10/13 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
2009/12/07 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
jQuery中map()方法用法实例
2015/01/06 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
python logging类库使用例子
2014/11/22 Python
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
python监控进程脚本
2018/04/12 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
Python sublime安装及配置过程详解
2020/06/29 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
鼓励运动员的广播稿
2014/02/08 职场文书
安全宣传标语口号
2014/06/06 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
公诉意见书范文
2015/06/05 职场文书
人生遥控器观后感
2015/06/11 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android