pprint(pretty-print 的缩写)是 Python 的标准库之一,用于美观地打印数据结构。它特别适合用于调试或展示嵌套结构较深的列表、字典、集合等,使输出更易读。

与内置的 print() 相比,pprint 会自动换行、缩进、排序键,使复杂结构的可视化更清晰直观。

常见应用场景:

(1)打印嵌套的字典或列表结构。

(2)输出大型 JSON 数据结构以便查阅。

(3)美观输出日志中的复杂对象。

(4)辅助调试数据结构错乱的问题。

◆ ◆

核心概念

1、pprint.pprint() 是最常用的函数,用于“美化打印”。

2、pprint.PrettyPrinter() 是一个可配置的打印器对象,支持自定义宽度、缩进、深度等。

3、可以控制输出排序、最大嵌套层级、防止无限递归等。

◆ ◆

应用举例

例 1: 对嵌套结构进行美观输出

import pprint

data = {
    "name": "Alice",
    "age": 30,
    "languages": ["Python", "C++", "Rust"],
    "education": {
        "undergrad": "MIT",
        "grad": {
            "school": "Stanford",
            "year": 2018
        }
    }
}
pprint.pprint(data)

例 2:限制打印深度

import pprint

nested = {"level1": {"level2": {"level3": {"level4": "Too deep"}}}}
pprint.pprint(nested, depth=2)
# 输出中 "level3" 会被省略为 {...}

例 3:返回格式化字符串(用于日志)

import pprint

config = {"server": "localhost", "ports": [8000, 8001, 8002]}
text = pprint.pformat(config)
print("Config:\n", text)

例 4:使用 PrettyPrinter 自定义缩进与宽度

from pprint import PrettyPrinter

printer = PrettyPrinter(indent=4, width=40)
printer.pprint(["apple", "banana", "grape", "watermelon", "strawberr

例 5:对字典不排序输出(Python 3.8+)

import pprint

data = {"z": 1, "a": 2, "m": 3}
pprint.pprint(data, sort_dicts=False)
# 输出顺序将按插入顺序保留(Python 3.7+字典有序)

◆ ◆

常用函数速览

pprint(data, *, indent=1, width=80, depth=None, compact=False, sort_dicts=True)

将数据结构以美观的格式打印到标准输出。

参数

data:要打印的对象

indent:缩进的空格数

width:每行最大宽度(超出将换行)

depth:限制打印深度,超出部分用 ... 表示

compact:是否尽量在一行内展示紧凑结构

sort_dicts:是否对字典键排序(默认排序)

返回:无(直接输出)

pformat(data, ...)

与 pprint() 类似,但返回格式化后的字符串而不是直接打印。

参数:同 pprint()

返回:美化后的字符串,可用于日志或写入文件

PrettyPrinter(...)

创建一个美化打印器对象,可多次使用或自定义格式。

常用方法:

.pprint(obj):打印对象。

.pformat(obj):返回格式化字符串。

◆ ◆

补充说明

1、在调试中使用 pprint() 往往比 print() 更清晰,尤其对嵌套对象和长列表。

2、pprint 不是专为 JSON 设计,但可与 json.dumps() 配合使用。

3、如果需要将 pprint 的输出写入文件,可以使用 stream 参数。

import pprint

data = {"z": 1, "a": 2, "m": 3}
with open("output.txt", "w") as f:
    pp = pprint.PrettyPrinter(stream=f)
    pp.pprint(data)

点赞有美意,赞赏是鼓励