You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Jupyter中所有Python对象的美观打印(设置深度限制)

配置Jupyter全局使用带深度限制的pprint打印所有对象

要让Jupyter默认用自定义的pprint.PrettyPrinter(带深度截断)打印所有对象,你可以直接覆盖IPython的默认文本格式化器,步骤如下:

临时生效(单Notebook内)

在Jupyter Notebook中运行以下代码:

import pprint
from IPython.core.formatters import PlainTextFormatter

# 定义自定义打印函数,设置深度限制(这里设为3,可按需调整)
def custom_pretty_print(obj, printer, cycle):
    if cycle:
        return printer.text('...')  # 处理循环引用,避免无限递归
    formatted = pprint.pformat(obj, depth=3)
    return printer.text(formatted)

# 获取IPython的纯文本格式化器
plain_formatter = get_ipython().display_formatter.formatters['text/plain']

# 清除原有针对各类对象的打印规则,确保所有对象都用自定义逻辑
plain_formatter.type_printers.clear()

# 为所有对象注册自定义打印机(object是所有Python类的基类)
plain_formatter.for_type(object, custom_pretty_print)

永久生效(所有Jupyter会话)

如果不想每次打开Notebook都重复运行代码,可以把配置放到IPython启动脚本中:

  1. 若IPython配置目录不存在,先运行ipython profile create创建,默认路径为~/.ipython/profile_default/startup/
  2. 在该目录下新建.py文件(比如custom_pprint.py),将上述代码复制进去
  3. 重启Jupyter,以后所有会话都会自动应用这个打印规则

补充说明

  • pprint.pformat的depth参数可按需调整,设为None则取消深度限制
  • 处理cycle参数是为了应对循环引用场景,避免打印时出现异常
  • 清除type_printers是因为IPython默认会给list、dict等内置类型单独设置打印规则,清除后才能让所有对象统一使用自定义逻辑

内容的提问来源于stack exchange,提问作者Migwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:31:27