首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python REPL中默认的漂亮打印

Python REPL中默认的漂亮打印
EN

Stack Overflow用户
提问于 2013-06-22 15:26:36
回答 3查看 2.9K关注 0票数 22

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

目前我是通过pprint.pprint()函数来实现的。

代码语言:javascript
复制
>>> pprint.pprint(data)
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0,
 'THUMBNAIL': ''}

但是我想默认打印出漂亮的图片

代码语言:javascript
复制
>>> data
{'SHIP_CATEGORY': '',
 'SHIP_QUANTITY': 1,
 'SHIP_SEPARATELY': 0,
 'SHIP_SUPPLEMENT': 0,
 'SHIP_SUPPLEMENT_ONCE': 0,
 'THUMBNAIL': ''}

我都试了些什么?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-22 15:37:39

使用sys.displayhook

代码语言:javascript
复制
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)

如果你不想在每次运行交互式外壳时都输入上面的代码,就把它放到PYTHONSTARTUP中。

用法:

代码语言:javascript
复制
>>> data = dict.fromkeys(range(10))
>>> data
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
>>> pprint_on()
>>> data
{0: None,
 1: None,
 2: None,
 3: None,
 4: None,
 5: None,
 6: None,
 7: None,
 8: None,
 9: None}
>>> pprint_off()
>>> data
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
票数 24
EN

Stack Overflow用户

发布于 2013-06-22 15:34:20

使用IPython外壳:

代码语言:javascript
复制
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,以防您想要禁用这种漂亮的打印。

python还有像features一样的制表符补全、多行粘贴、运行shell命令等,所以它比普通的python要好得多。

票数 11
EN

Stack Overflow用户

发布于 2019-06-24 00:29:55

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

代码语言:javascript
复制
from pprint import pprint
import sys

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

然后换回来(基于基里尔的评论):

代码语言:javascript
复制
sys.displayhook = sys.__displayhook__
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17248383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档