repr函数输出调试信息

1.概述

repr函数可以辅助我们输出调试信息,下面介绍下他的一些用法

2.repr函数使用

2.1.repr函数输出变量类型

使用print输出调试信息时候,不会输出变量的类型。在调试程序时候需要查看它的类型时就变得很重要,使用repr函数可以输出他们类型的差别。

# 使用print输出的结果没法判断5是int类型还是字符串类型
print(5)
print('5')# 使用repr函数输出的变量可以区分变量类型
print(repr(5))
print(repr('5'))

运行上面代码输出结果,最后两个5类型是不一样的。

5
5
5
'5'

2.2.repr输出自定义类型信息

对于内置类型外的类型来说,print函数所打印的默认就是示例的repr值,所以无需专门调用repr,object子类的repr默认实现不是很有用,举个例子看下。

class OpaqueClass:def __init__(self, x, y):self.x = xself.y = yobj = OpaqueClass(1, 'foo')
# 默认调用repr输出信息
print(obj)

运行上面的代码,输出的信息只有一个实例地址。对于调试来说参考价值不大,下面我们来重写repr输出自定义信息。

<__main__.OpaqueClass object at 0x10b71cb50>

如果这个类是受我们控制,那么可以重写repr魔法函数定义输出信息。

class BetterClass:def __init__(self, x, y):self.x = xself.y = y# 重写repr魔法方法,输出调试信息def __repr__(self):return f'BetterClass({self.x!r}, {self.y!r})'# Example 10
obj = BetterClass(2, 'bar')
print(obj)

运行上面的代码,输出了调试信息。

BetterClass(2, 'bar')

如果这个类不受我们控制,那么可以用其他的办法,把对象的实例字典传给print函数,这个字典是实例的dict属性。

obj = OpaqueClass(4, 'baz')
print(obj.__dict__)

运行上面的代码可以看到输出了调试信息

{'x': 4, 'y': 'baz'}

repr函数输出调试信息相关推荐

  1. 嵌入式开发输出调试信息的几种方法(常规法及非常规法)

    这篇文章对于研发查找问题和测试都有很大帮助,在这里保存记录一下. 论语>有云:"工欲善其事,必先利其器".输出调试信息是软件开发中必不可少的调试利器,在出现bug时如果没有调 ...

  2. C++ MFC控制台输出调试信息

    C++ MFC控制台输出调试信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1.#include <conio.h> 2.在需要开启控制台窗口的地方调用 ...

  3. 在MFC,Win32程序中向控制台(Console)窗口输出调试信息

    在MFC程序中输出调试信息的方法有两种,一种是使用TRACE宏,可以向Output窗口输出调试信息:另一种是用MessageBox,弹出消息框来输出调试信息,但会影响程序的运行. 其实有一种方法可以更 ...

  4. php语法中可以输出调试信息,怎么优雅的输出PHP调试信息

    如何优雅的输出PHP调试信息 经常因为出现紧急bug而被老板骂的同事,为了更快的修复而直接利用线上的错误环境现场debug,并直接在页面上echo和dump.结果被老板发现了,又是一通臭骂.那么有没有 ...

  5. OutputDebugString输出调试信息

    OutputDebugString输出调试信息 声明 <windows.h>文件声明了 OutputDebugString() 函数的两个版本:一个用于 ASCII,一个用于 Unicod ...

  6. STM32 使用 ITM 输出调试信息

    本文开发环境: MCU型号:STM32F103ZE IDE环境: MDK 5.27 调试器:ST-LINK 本文内容: 使用 ITM 输出调试信息 文章目录 一.ITM 简介 二.ITM 输出功能的配 ...

  7. 使用OutputDebugString输出调试信息

    概要: 在编写控制台程序的时候我们经常会使用printf输出调试信息,使我们了解程序的状态,方便调试,但是当编写非控制台程序的时候这种方法就行不通了.可以使用以下方法: (1)使用Log机制 (2)用 ...

  8. DirectX11 龙书 暴力输出调试信息方法

    想在Win32应用程序输出调试信息,有两种方法 1)简单粗暴,在窗口标题栏输出内容 2) 创建console控制台,在控制台输出信息 以龙书第六章节ShapeDemo为例,我在UpdateScence ...

  9. android bionic log打印,如何让android的bionic中的linker输出调试信息

    缺省情况下bionic的linker是不会输出调试信息的,因为Linker.c里一开始就写着: * Do NOT use malloc() and friends or pthread_*() cod ...

最新文章

  1. Cocos2d-x使用iOS游戏内付费IAP(C++篇)
  2. 【STM32】FreeRTOS编码风格
  3. 2014年4月的北京大学微电子考研复试题-什么是小信号?
  4. php 支付签名验证失败,choosewxpay fail解决,微信支付签名验证错误解决
  5. Synchronized 的 8 种使用场景!
  6. uBLAS——Boost 线性代数基础程序库
  7. 转:VC++获取屏幕大小第一篇 像素大小GetSystemMetrics
  8. 关于H5页面的测试总结与分析
  9. java电子书下载网站
  10. python图像处理(十一)——图像锐化与边缘检测之Roberts算子、Prewitt算子、Sobel算子、Laplacian算子
  11. Simulink 快速入门(二)--创建简单模型
  12. windows进程详解
  13. 命主属性是水什么意思_八字五行属性查询表,有没有五行属性含水的且
  14. white-space:nowrap normal pre pre-wrap pre-line的区别以及pre和pre-wrap的“首行缩进“问题
  15. java卡牌游戏详解
  16. 使用docker 注册runner
  17. Activity启动过程详解(Android P)
  18. 盘一盘 这些深度学习框架够你用一年
  19. C#自恋数字黑洞—水仙花数、玫瑰花数、五角星数
  20. vmware虚拟服务器密码忘记,VMWare虚拟机忘记window server 2012 administrator密码 重置密码教程...

热门文章

  1. [ app.json 文件内容错误] app.json: window.navigationBarTextStyle 字段需为 black,white【已解决】
  2. Vue引入百度地图警告:A Parser-blocking, cross site (i.e. different eTLD+1) script....
  3. 什么是硬件加密与软件加密,有什么区别?
  4. 软件测试工程师书籍介绍(精华)
  5. 小米路由器AC2100写入OpenWrt
  6. TMOS系统之NATS 和 SNAT
  7. 频域分析中的三频段理论
  8. git 常用命令及解析 由浅入深
  9. mysql基础约束详解
  10. 电脑播放器哪个最好用