如何为pprint创建固定sort_dicts=False参数的函数别名
固定
pprint默认sort_dicts=False的实现方法 你之前的写法不对是因为:newpp = pprint(…, sort_dicts=False)是直接调用执行pprint,会立刻触发打印,返回值是None,根本没法当可重复调用的函数用。
常用的实现方式有两种:
方案1:用标准库functools.partial(最省事)
functools.partial就是专门给函数固定部分参数、生成新的偏函数的工具,写起来非常简洁:
from pprint import pprint from functools import partial newpp = partial(pprint, sort_dicts=False)
生成的newpp和原生pprint用法完全没区别:
- 默认会保留字典的原始插入顺序打印,不会自动按键排序
- 原生
pprint支持的所有其他参数(比如缩进indent、行宽width、输出流stream等)都能正常传 - 要是临时需要开排序,手动传
sort_dicts=True就能覆盖默认的固定值
方案2:自己写包装函数(不用额外导包、更灵活)
要是不想多导一个模块,或者后续还想加自定义打印逻辑,直接写一层包装函数就行:
from pprint import pprint def newpp(*args, **kwargs): # 给sort_dicts设默认值False,调用时手动传的参数优先级更高 kwargs.setdefault("sort_dicts", False) return pprint(*args, **kwargs)
这个写法效果和partial完全一致,后面要加其他固定参数、或者打印前后加自定义逻辑都很方便。
注:你之前用的
thing = pprint只是给原函数起了个直接别名,本质上还是同一个函数,改不了原函数的默认参数,所以满足不了固定参数的需求。
内容的提问来源于stack exchange,提问作者Manngo
相关产品推荐
相关产品推荐

