使用IPython对象?在ipdb中



IPython通过将object?写入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

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外壳中发生的大部分情况

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

我刚刚学到的一个更好的方法是使用中,那么事情的工作方式与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>

相关内容

  • 没有找到相关文章

最新更新