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)“点赞有美意,赞赏是鼓励”
热门跟贴