通过实例了解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 20 Python
python分割文件的常用方法
Nov 01 Python
python分析作业提交情况
Nov 22 Python
Python2.7+pytesser实现简单验证码的识别方法
Dec 29 Python
Python 12306抢火车票脚本
Feb 07 Python
python操作mysql代码总结
Jun 01 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
Python设计模式之桥接模式原理与用法实例分析
Jan 10 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Pandas中resample方法详解
Jul 02 Python
Python Pickle 实现在同一个文件中序列化多个对象
Dec 30 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 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之第六天
2006/10/09 PHP
PHP 命名空间实例说明
2011/01/27 PHP
PHP新手入门学习方法
2011/05/08 PHP
PHP反射机制用法实例
2014/08/28 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
range 标准化之获取
2011/08/28 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
Python单元和文档测试实例详解
2019/04/11 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
《只有一个地球》教学反思
2014/02/14 职场文书
总账会计岗位职责
2014/03/13 职场文书
幼儿园家长寄语
2014/04/02 职场文书
电子专业自荐信
2014/07/01 职场文书
2014年财务科工作总结
2014/11/11 职场文书
齐云山导游词
2015/02/06 职场文书
个人借条范本
2015/05/25 职场文书
四风之害观后感
2015/06/09 职场文书
2016新年感言
2015/08/03 职场文书
Python基础之Socket通信原理
2021/04/22 Python
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技