python - 使用IPython对象?在ipdb中

原文 标签 python ipython pdb ipdb

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

可以在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调试器可以打印docstring,这是IPython对象检查正在执行的操作的一部分。只需输入

ipdb> print(object.__doc__)


例如,检查内置求和函数

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>

相关文章:

c# - 你如何在IronPython中使用标准库?

python - 运行IPyhon.widgets时,没有名为“ ipywidgets”的模块错误[关闭]

python - 如何像这样调试嵌套的python行:“ c = np.sum(np.abs(a-b))”

python - Python和MongoDB - 如何通过BinData类型查找

python - Python正则表达式,用于在值可能包含引号或不包含引号的情况下拆分以等号分隔的键/值对

python - IPython模块

r - 在Windows上为Ipython安装R内核

python - 使用FIFO在没有stdin / stdout的情况下运行pdb

python - python脚本上的Python pdb作为包运行

python - 环境变量