相信很多Python
初学者都喜欢用 print()
来打印信息来进行代码调试,但 print()
方法打印出来的数据有时显示效果并不好看,今天霸夫老师来教大家一个更“漂亮”的打印方法。
这新方法非常好记,就是在 print()
前面再加一个 p
,也就是 pprint()
,如果嫌多打个字母太累了,它还有个简写函数 pp()
,实现的功能和参数是一模一样的。
pprint
全称是 "pretty printer",用于美化打印复杂的数据结构,比如列表、字典、集合等。它能够以更易读的格式输出这些数据结构,包括缩进和换行,使得输出结果更加清晰。pprint()
也是 Python
中的内置函数,不需要安装第三方库,但是在使用前需要先导入:
from pprint import pprint
使用也很简单
from pprint import pprint
data = {
'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}
}
pprint(data)
输出结果如下:
{'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}}
跟默认的 print()
输出有什么区别?默认的是在同一行输出的,没有任何排版:
{'a': [1, 2, 3], 'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]}, 'c': (40, 50, 60), 'd': {'中文名': '霸夫', '英文名': 'buff'}}
pprint()
函数的定义如下:
def pprint(object, stream=None, indent=1, width=80, depth=None, *,
compact=False, sort_dicts=True, underscore_numbers=False):
我们重点关注 indent
,width
,depth
这三个参数。
indent指定每一层缩进的空格数,默认为1。
from pprint import pprint
data = {
'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}
}
pprint(data, indent=4)
pprint(data, indent=8)
输出如下:
{ 'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}}
{ 'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}}
可以看到按照指定的空格数量进行了缩进显示。
width 指定输出的宽度,默认为80。
from pprint import pprint
data = {
'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}
}
pprint(data, width=40)
pprint(data, width=20)
输出如下:
{'a': [1, 2, 3],
'b': {'x': 10,
'y': 20,
'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}}
{'a': [1, 2, 3],
'b': {'x': 10,
'y': 20,
'z': [25,
30,
35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫',
'英文名': 'buff'}}
可以看到当我们指定一个较小的宽度时,自动对每一行显示的内容进行了约束(自动进行换行显示子元素)。
depth 指定打印数据结构的最大深度。如果设置为 None,则打印所有层级。
当我们打印一个数据结构的层次比较深的对象时(比如字典、列表等),可能并不想显示所有的数据内容,只需要展示上面的几个层级就够了,那么可以通过 depth 来指定输出深度。
from pprint import pprint
data = {
'a': [1, 2, 3],
'b': {'x': 10, 'y': 20, 'z': [25, 30, 35]},
'c': (40, 50, 60),
'd': {'中文名': '霸夫', '英文名': 'buff'}
}
pprint(data, depth=1)
pprint(data, width=2)
输出结果:
{'a': [...], 'b': {...}, 'c': (...), 'd': {...}}
{'a': [1,
2,
3],
'b': {'x': 10,
'y': 20,
'z': [25,
30,
35]},
'c': (40,
50,
60),
'd': {'中文名': '霸夫',
'英文名': 'buff'}}
可以看到根据我们的参数设置,超过深度的内容进行了缩略显示。
是不是很好用?快去试试吧!
关于搞钱案例、关于AI自动获客的玩法