星驰编程网

免费编程资源分享平台_编程教程_代码示例_开发技术文章

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

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

在 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 参数

嵌套处理

智能识别深层结构

仅支持有限层级

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言