Python REPL中默认的漂亮打印

2024-05-12 23:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在REPL上默认启用pretty print?在

目前我是用pprint.pprint()函数来完成的。在

>>> pprint.pprint(data)
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0,
 'THUMBNAIL': ''}

但我想要漂亮的印刷品

^{pr2}$

我试过什么?
我在谷歌上搜索。未找到大多数结果指向pprint模块的任何内容


Tags: 函数dataprettyreplquantitypprintprintthumbnail
3条回答

使用sys.displayhook

import pprint
import sys

orig_displayhook = sys.displayhook

def myhook(value):
    if value != None:
        __builtins__._ = value
        pprint.pprint(value)

__builtins__.pprint_on = lambda: setattr(sys, 'displayhook', myhook)
__builtins__.pprint_off = lambda: setattr(sys, 'displayhook', orig_displayhook)

如果您不希望每次运行交互式shell时都键入上面的代码,请将其放入PYTHONSTARTUP。在

用法:

^{pr2}$

使用IPython外壳:

In [10]: data = {'SHIP_CATEGORY': '',  'SHIP_QUANTITY': 1, 'SHIP_SEPARATELY': 0, 'SHIP_SUPPLEMENT': 0, 'SHIP_SUPPLEMENT_ONCE': 0,}

In [11]: data
Out[11]: 
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0}

它还有一个选项 no-pprint,以防您想禁用这种漂亮的打印。在

IPythonshell还具有features式的制表符补全、多行粘贴、运行shell命令等功能,比普通的pythonshell要好得多。在

基于falsetru's接受的答案,但以一行代码的形式:

from pprint import pprint
import sys

sys.displayhook = lambda x: exec(['_=x; pprint(x)','pass'][x is None])

以及切换回去(根据Kyril的评论):

^{pr2}$

相关问题 更多 >