• repr函数输出调试信息


    repr函数输出调试信息

    1.概述

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

    2.repr函数使用

    2.1.repr函数输出变量类型

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

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

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

    5
    5
    5
    '5'
    
    • 1
    • 2
    • 3
    • 4

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

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

    class OpaqueClass:
        def __init__(self, x, y):
            self.x = x
            self.y = y
    
    obj = OpaqueClass(1, 'foo')
    # 默认调用repr输出信息
    print(obj)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    <__main__.OpaqueClass object at 0x10b71cb50>
    
    • 1

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

    class BetterClass:
        def __init__(self, x, y):
            self.x = x
            self.y = y
    	# 重写repr魔法方法,输出调试信息
        def __repr__(self):
            return f'BetterClass({self.x!r}, {self.y!r})'
    
    
    # Example 10
    obj = BetterClass(2, 'bar')
    print(obj)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    BetterClass(2, 'bar')
    
    • 1

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

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

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

    {'x': 4, 'y': 'baz'}
    
    • 1
  • 相关阅读:
    Go 微服务开发框架 DMicro 的设计思路
    北斗三号5G遥测终端机系统在水库大坝安全监测应用
    【JavaWeb】简易权限校验、Filter-程序跳转
    知识图谱补全(KGC)论文阅读笔记
    04.jvm常量池01
    Django框架FAQ
    React
    [含毕业设计论文+PPT+源码等]ssm家教服务系统小程序+Java后台管理系统|前后分离VUE
    系列七、GC垃圾回收【四大垃圾算法-标记压缩算法】
    nginx-配置拆分(各个模块详细说明)
  • 原文地址:https://blog.csdn.net/m0_38039437/article/details/128118985