写python常用print来调试快来学会这个更漂亮的方法

文摘   2024-10-21 22:34   湖南  

相信很多Python初学者都喜欢用 print() 来打印信息来进行代码调试,但 print() 方法打印出来的数据有时显示效果并不好看,今天霸夫老师来教大家一个更“漂亮”的打印方法。

这新方法非常好记,就是在 print() 前面再加一个 p ,也就是 pprint() ,如果嫌多打个字母太累了,它还有个简写函数 pp() ,实现的功能和参数是一模一样的。

pprint 全称是 "pretty printer",用于美化打印复杂的数据结构,比如列表、字典、集合等。它能够以更易读的格式输出这些数据结构,包括缩进和换行,使得输出结果更加清晰。

pprint() 也是 Python 中的内置函数,不需要安装第三方库,但是在使用前需要先导入:

from pprint import pprint

使用也很简单

from pprint import pprint

data = {
    'a': [123],
    'b': {'x'10'y'20'z': [253035]},
    'c': (405060),
    'd': {'中文名''霸夫''英文名''buff'}
}
pprint(data)

输出结果如下:

{'a': [123],
 'b': {'x'10'y'20'z': [253035]},
 'c': (405060),
 'd': {'中文名''霸夫''英文名''buff'}}

跟默认的 print() 输出有什么区别?默认的是在同一行输出的,没有任何排版:

{'a': [123], 'b': {'x'10'y'20'z': [253035]}, 'c': (405060), 'd': {'中文名''霸夫''英文名''buff'}}


pprint() 函数的定义如下:

def pprint(object, stream=None, indent=1, width=80, depth=None, *,
           compact=False, sort_dicts=True, underscore_numbers=False)
:


我们重点关注 indentwidthdepth 这三个参数。

  • indent指定每一层缩进的空格数,默认为1。
from pprint import pprint

data = {
    'a': [123],
    'b': {'x'10'y'20'z': [253035]},
    'c': (405060),
    'd': {'中文名''霸夫''英文名''buff'}
}

pprint(data, indent=4)
pprint(data, indent=8)

输出如下:

{   'a': [123],
    'b': {'x'10'y'20'z': [253035]},
    'c': (405060),
    'd': {'中文名''霸夫''英文名''buff'}}
{       'a': [123],
        'b': {'x'10'y'20'z': [253035]},
        'c': (405060),
        'd': {'中文名''霸夫''英文名''buff'}}

可以看到按照指定的空格数量进行了缩进显示。

  • width 指定输出的宽度,默认为80。
from pprint import pprint

data = {
    'a': [123],
    'b': {'x'10'y'20'z': [253035]},
    'c': (405060),
    'd': {'中文名''霸夫''英文名''buff'}
}

pprint(data, width=40)
pprint(data, width=20)

输出如下:

{'a': [123],
 'b': {'x'10,
       'y'20,
       'z': [253035]},
 'c': (405060),
 'd': {'中文名''霸夫''英文名''buff'}}
{'a': [123],
 'b': {'x'10,
       'y'20,
       'z': [25,
             30,
             35]},
 'c': (405060),
 'd': {'中文名''霸夫',
       '英文名''buff'}}

可以看到当我们指定一个较小的宽度时,自动对每一行显示的内容进行了约束(自动进行换行显示子元素)。

  • depth 指定打印数据结构的最大深度。如果设置为 None,则打印所有层级。

当我们打印一个数据结构的层次比较深的对象时(比如字典、列表等),可能并不想显示所有的数据内容,只需要展示上面的几个层级就够了,那么可以通过 depth 来指定输出深度。

from pprint import pprint

data = {
    'a': [123],
    'b': {'x'10'y'20'z': [253035]},
    'c': (405060),
    'd': {'中文名''霸夫''英文名''buff'}
}

pprint(data, depth=1)
pprint(data, width=2)

输出结果:

{'a': [...], 'b': {...}, 'c': (...), 'd': {...}}
{'a': [1,
       2,
       3],
 'b': {'x'10,
       'y'20,
       'z': [25,
             30,
             35]},
 'c': (40,
       50,
       60),
 'd': {'中文名''霸夫',
       '英文名''buff'}}

可以看到根据我们的参数设置,超过深度的内容进行了缩略显示。

是不是很好用?快去试试吧!

关注我,你身边需要一个自动化提效技术专家。


我是有霸夫,教你用AI自动化搞流量、搞内容
有很多不方便公开发公众号的
关于搞钱案例、关于AI自动获客的玩法
我都分享在朋友圈

扫码加我本人微信👇
围观我每天的朋友圈

霸夫
流量工厂主理人,AI+自动化解决内容批量生产、内容矩阵分发、数据监控、评论私信自动回复等问题
 最新文章