pprint
是Python标准库中的一个模块,全称为"Pretty Printer"。它提供了一个pprint()
函数和一个pformat()
函数,用于生成比print()
更加美观的输出。这对于打印复杂的数据结构如字典、列表等尤其有用,因为pprint
会根据数据结构的嵌套层次自动换行并缩进,使得输出结果更加清晰易读。
1. 主要用法
1.1 pprint()
pprint.pprint()
函数可以直接打印出美化后的数据结构。
示例代码:
from pprint import pprint
data = [{'name': 'John', 'age': 45, 'roles': ['Admin', 'User']}, {'name': 'Jane', 'age': 38, 'roles': ['User']}]
pprint(data)
输出:
[{'age': 45, 'name': 'John', 'roles': ['Admin', 'User']},
{'age': 38, 'name': 'Jane', 'roles': ['User']}]
1.2 pformat()
pprint.pformat()
函数则会返回美化后的数据结构的字符串,而不是直接打印出来,这在需要将美化后的字符串用于日志记录或其他目的时非常有用。
示例代码:
from pprint import pformat
data = [
{"name": "John", "age": 45, "roles": ["Admin", "User"]},
{"name": "Jane", "age": 38, "roles": ["User"]},
]
formatted_data = pformat(data)
print(formatted_data)
输出:
[{'age': 45, 'name': 'John', 'roles': ['Admin', 'User']},
{'age': 38, 'name': 'Jane', 'roles': ['User']}]
2. 定制美化输出
pprint
还允许用户通过参数定制输出格式,如缩进宽度、输出宽度等。
2.1 定制缩进
通过indent
参数可以定制缩进宽度。
示例代码:
from pprint import pprint
data = [
{"name": "John", "age": 45, "roles": ["Admin", "User"]},
{"name": "Jane", "age": 38, "roles": ["User"]},
]
pprint(data, indent=4)
输出:
[ {'age': 45, 'name': 'John', 'roles': ['Admin', 'User']},
{'age': 38, 'name': 'Jane', 'roles': ['User']}]
2.2 定制宽度
通过width
参数可以定制输出的宽度,pprint
会尽可能在不超过这个宽度的情况下输出。
示例代码:
from pprint import pprint
data = [
{"name": "John", "age": 45, "roles": ["Admin", "User"]},
{"name": "Jane", "age": 38, "roles": ["User"]},
]
pprint(data, width=20)
输出:
[{'age': 45,
'name': 'John',
'roles': ['Admin',
'User']},
{'age': 38,
'name': 'Jane',
'roles': ['User']}]
3.3 排序字典键
通过设置sort_dicts
为False
,可以保持字典键的原始顺序。
示例代码:
from pprint import pprint
data = {"b": 2, "a": 1, "c": 3}
pprint(data, sort_dicts=False)
输出:
{'b': 2, 'a': 1, 'c': 3}
如果不显式设置这个参数的话就会重排序:
{'a': 1, 'b': 2, 'c': 3}
3. 结论
pprint
模块是Python中一个非常有用的工具,尤其是在处理复杂的数据结构时。它通过美化输出,使得数据结构的阅读和理解变得更加容易。通过本文的介绍和示例,希望能帮助你更好地利用pprint
模块来优化你的Python代码输出。