通过实例了解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 内置字符串处理函数的使用方法
Jun 11 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
Python操作Word批量生成文章的方法
Jul 28 Python
Python 基础之字符串string详解及实例
Apr 01 Python
点球小游戏python脚本
May 22 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
python Tkinter版学生管理系统
Feb 20 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
django中ORM模型常用的字段的使用方法
Mar 05 Python
Django认证系统user对象实现过程解析
Mar 02 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
Mar 09 Python
python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
Apr 24 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
eAccelerator的安装与使用详解
2013/06/13 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
学习python (2)
2006/10/31 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
幼儿园中秋节活动方案
2014/02/06 职场文书
给老师的检讨书
2014/02/11 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
六年级学生评语大全
2014/12/26 职场文书
先进教师个人总结
2015/02/11 职场文书
小学运动会开幕词
2016/03/04 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Java实现给Word文件添加文字水印
2022/02/15 Java/Android
python如何将mat文件转为png
2022/07/15 Python