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>