ipython和python之间的输出差异

Posted

技术标签:

【中文标题】ipython和python之间的输出差异【英文标题】:Output difference between ipython and python 【发布时间】:2014-02-02 08:34:34 【问题描述】:

据我了解,python 将打印输出的repr,但显然并非总是如此。例如:

在 ipython 中:

In [1]: type([])
Out[1]: list

In [2]: set([3,1,2])
Out[2]: 1, 2, 3

在python中:

>>> type([])
<type 'list'>
>>> set([3,1,2])
set([1, 2, 3])

ipython 对输出应用什么转换?

【问题讨论】:

ipython 1.1.0 on python 2.7.5 【参考方案1】:

代替repr 或标准pprint 模块IPython 使用IPython.lib.pretty.RepresentationPrinter.pretty 方法来print the output。

模块IPython.lib.pretty 提供了两个在后台使用RepresentationPrinter.pretty 的函数。

IPython.lib.pretty.pretty函数返回一个对象的字符串表示:

>>> from IPython.lib.pretty import pretty
>>> pretty(type([]))
'list'

IPython.lib.pretty.pprint 函数打印对象的表示:

>>> from IPython.lib.pretty import pprint
>>> pprint(type([]))
list

IPython 使用自己的漂亮打印机,因为标准 Python pprint 模块“不允许开发人员提供自己的漂亮打印回调。”

【讨论】:

是否在某处记录了IPython.lib.pretty.pretty 确实是使用的功能?我做了IPython.lib.pretty.pretty = lambda *args, **kwargs: 'potato',ipython 中的输出没有变化。 @wim,很好,我已经编辑了我的答案。 IPython.lib.pretty.RepresentationPrinter.pretty = lambda *args, **kwargs: sys.stdout.write('12') 将为任何输入打印 12。 请注意,只有%pprint 魔法开启时才会出现这种情况。我默认将其关闭,并获取 OP 在常规 Python 提示符下看到的行为。

以上是关于ipython和python之间的输出差异的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 6.5升级Python和安装IPython(亲测可用)

ipython与sublime调用其shell出现的问题

怎么安装Anaconda

Centos6.6升级Python与安装ipythonpip小结

c++ 和 python 层之间的 opencv.groupRectangles() 差异

Python 2 和 3 之间 ctypes 的差异