ipython和python之间的输出差异

wim*_*wim 2 python repr ipython read-eval-print-loop

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

在ipython中:

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

In [2]: set([3,1,2])
Out[2]: {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)

在python中:

>>> type([])
<type 'list'>
>>> set([3,1,2])
set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

ipython在输出上应用了哪些转换?

Nig*_*nel 8

而不是repr或标准pprint模块IPython使用IPython.lib.pretty.RepresentationPrinter.pretty方法来打印输出.

模块IPython.lib.pretty提供了两个RepresentationPrinter.pretty在幕后使用的功能.

IPython.lib.pretty.pretty function返回对象的字符串表示形式:

>>> from IPython.lib.pretty import pretty
>>> pretty(type([]))
'list'
Run Code Online (Sandbox Code Playgroud)

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

>>> from IPython.lib.pretty import pprint
>>> pprint(type([]))
list
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,只有“%pprint”魔法打开时才会出现这种情况。我默认将其关闭,并获取 OP 在常规 Python 提示符下看到的行为。 (2认同)