2

object?IPython 通过写入REPL提供了方便的对象检查工具。

这可以在ipdb中访问吗?它似乎不能作为内置命令使用。

目前我看到帮助只给出标准的 pdb 帮助:

ipdb> help

Documented commands (type help <topic>):
========================================
EOF    bt         cont      enable  jump  pdef    psource  run      unt
a      c          continue  exit    l     pdoc    q        s        until
alias  cl         d         h       list  pfile   quit     step     up
args   clear      debug     help    n     pinfo   r        tbreak   w
b      commands   disable   ignore  next  pinfo2  restart  u        whatis
break  condition  down      j       p     pp      return   unalias  where
4

1 回答 1

2

IPython shell 中的对象检查打印文档字符串和其他信息。ipdb调试器可以打印文档字符串,这是 IPython 对象检查的一部分。只需键入

ipdb> print(object.__doc__)

例如,检查内置的sum函数

ipdb> print(sum.__doc__)
sum(iterable[, start]) -> value

Return the sum of an iterable of numbers (NOT strings) plus the value
of parameter 'start' (which defaults to 0).  When the iterable is
empty, return start.
ipdb>

这是 IPython shell 中发生的大部分情况

In [5]: sum?
Docstring:
sum(iterable[, start]) -> value

Return the sum of an iterable of numbers (NOT strings) plus the value
of parameter 'start' (which defaults to 0).  When the iterable is
empty, return start.
Type:      builtin_function_or_method

In [6]:

另一种选择是嵌入一个 IPython shell 作为调试断点。这很好,但是当这样的调试断点嵌入到循环中时,我还没有找到干净退出的方法。

from IPython import embed
embed()  # debug breakpoint

我刚刚学到的一个更好的方法是使用! 在 ipdb 中,事情的工作方式与在 IPython shell 中相同。

ipdb> !help(sum)
Help on built-in function sum in module builtins:

sum(iterable, start=0, /)
  Return the sum of a 'start' value (default: 0) plus an iterable of numbers

  When the iterable is empty, return the start value.
  This function is intended specifically for use with numeric values and may
  reject non-numeric types.

ipdb>
于 2016-11-08T05:35:52.690 回答