通过实例了解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实现封装得到virustotal扫描结果
Oct 05 Python
浅谈django中的认证与登录
Oct 31 Python
python发送邮件脚本
May 22 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python logging设置和logger解析
Aug 28 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
Feb 12 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
Python如何在bool函数中取值
Sep 21 Python
python在地图上画比例的实例详解
Nov 13 Python
python3 删除所有自定义变量的操作
Apr 08 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
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
jquery乱码与contentType属性设置问题解决方案
2013/01/07 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
innerText 使用示例
2014/01/23 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
详解js私有作用域中创建特权方法
2016/01/25 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
python中使用zip函数出现错误的原因
2018/09/28 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
财务会计毕业生自荐信
2013/11/02 职场文书
初中生自我鉴定
2014/02/04 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
文化产业实施方案
2014/06/07 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
居住证明范文
2015/06/17 职场文书
导游词之神仙居景区
2019/11/15 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Fluentd搭建日志收集服务
2022/09/23 Servers