Python打印日志不能只会print,快来熟悉pprint

liftword13小时前技术文章5

动动小手,点击关注 ,感谢您的阅读,您的关注是我最大的动力!!!!

在 Python 开发中,打印复杂数据结构(如嵌套字典、多层列表)时,默认的print()函数往往输出为一行,难以快速读取。而pprint模块(Pretty Printer)能让数据以美观、易读的格式呈现,是调试和展示数据的必备工具。本文将通过核心函数、实用案例和避坑指南,带你掌握这个高效输出神器!

一、pprint 核心函数介绍

pprint模块提供了多个函数和类,支持所有可序列化的 Python 数据类型(列表、字典、元组、集合等),但不支持自定义类实例(需手动实现__repr__方法)。

1. pprint.pprint(object, indent=1, width=80, depth=None)

  • 功能:直接打印美化后的数据,支持嵌套结构自动换行和缩进。
  • 主要参数
    • indent:缩进空格数(默认 1)
    • width:每行最大宽度(默认 80,超出则换行)
    • depth:限制递归深度(避免无限嵌套)

2. pprint.pformat(object, indent=1, width=80, depth=None)

  • 功能:返回美化后的字符串,而非直接打印,便于进一步处理(如日志记录)。

3. pprint.PrettyPrinter类

  • 功能:自定义打印机,支持设置全局参数,适合需要重复使用相同格式的场景。

二、常用功能与案例

案例 1:基础美化输出(对比普通 print)

import pprint

# 杂乱的默认输出
data = {
    "name": "Alice",
    "age": 30,
    "hobbies": ["reading", "swimming", "coding", "traveling"],
    "contact": {
        "email": "alice@example.com",
        "phone": {
            "home": "123-456-7890",
            "mobile": "987-654-3210"
        }
    }
}

print(f"普通print输出:{data}")

print("pprint输出:")
pprint.pprint(data,indent=4,width=30)

输出对比:普通 print 输出会将嵌套结构挤在一行,而pprint自动换行并添加缩进,层次结构一目了然。

案例 2:处理超大嵌套结构(限制深度)

import pprint

# 深度为2时,只展开两层结构
deep_data = {"a": {"b": {"c": {"d": {"e": "五层嵌套"}}}}}
pprint.pprint(deep_data, depth=2)

# 输出:
# {'a': {'b': <...>}}  # 深层结构用<...>表示

案例 3:自定义打印机(PrettyPrinter 类)

import pprint
# 创建自定义打印机:缩进4空格,宽度60
printer = pprint.PrettyPrinter(indent=4, width=60)
printer.pprint(data)

案例4:在logging模块中美化日志打印

import pprint
import logging

# 将pprint格式的字符串写入日志
formatted_data = pprint.pformat(data, indent=2)
logging.error("错误:\n%s", formatted_data)

总结

pprint是Python 开发者的 “数据美颜相机”,可以清晰呈现复杂结构灵活的参数控制主要适用场景: 调试时打印字典、列表等复杂数据 生成易读的文档或报告 日志中记录结构化信息

当然我们之前也分享过,对于list/dict等结构化数据,也可以使用json模块的json.dumps输出格式化数据,主要区别如下,大家根据需要自行选择。

功能

pprint

json.dumps

输出格式

Python 原生格式(保留类型)

JSON字符串(跨语言)

可读性

优化缩进和换行

需指定 indent 参数

嵌套处理

智能识别深层结构

仅支持有限层级

相关文章

Python输出语句print()

Python中的输出语句主要通过内置函数 print() 实现,它可以灵活输出文本、变量、表达式结果等内容到控制台或其他文件。以下是详细介绍及示例:一、print()基本语法print(*object...

python中必须掌握的20个核心函数—print()详解

print()函数是Python中最基础、最常用的函数之一,也是每个Python初学者最先接触的函数。本文将全面详细地解析print()函数的各种用法和特性。1. print()函数的基本用法1.1...

python从入门到脱坑 输入与输出——print()函数

大家好今天开始系统的讲解一些入门课程,遇到不会的也不用想太多,跟着写一遍,学习到新内容是你就会明白.以下是针对Python初学者的print()函数详解,从基础到实用技巧,配合清晰示例:一、最基础用法...

Python 中的循环语句有哪些?看看全不全

Python 提供了两种主要的循环结构:`for` 循环和 `while` 循环。以下是它们的详细介绍和示例: 1. for 循环for 循环用于遍历可迭代对象(如列表、元组、字符串、字典、集合等)中...

Python循环语句

while 循环的基础语法while 条件: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ……注意:1. while的条件需得到布尔类型,T...