我经常发现自己使用缺乏足够文档的第三方库——包和模块。因此,研究源代码变得必不可少,但也可能是一项有些乏味的任务。我(我猜每个人)都使用dir()
和help()
函数开始使用,最近我开始使用该inspect
模块。我想知道您用来深入研究记录不良的代码的“方法”是什么,以及如何提高这样做的效率。非常感谢帮助。
问问题
243 次
2 回答
5
我发现IPython对于这类任务是必不可少的。( ?
show docstring) 和??
(show source) 魔术命令,再加上 IPython 出色的完成系统和实时对象自省,对我来说真的很重要。
一个示例会话:
In [1]: import sphinx.writers <TAB>
# see available modules and packages - narrow down
In [1]: import shpinx.writers.manpage as manpage
In [2]: manpage.<TAB>
# list and complete on the module's contents
In [3]: manpage.Writer?
# nicely formatted docstring follows
In [4]: manpage.Writer??
# nicely formatted source code follows
In [5]: %edit manpage
# open module in editor
# it really helps if you use something like ctags at this point
In [6]: %edit manpage.Writer
# open module in editor - jump to class Writer
不幸的是,并非所有代码都可以通过这种方式进行检查。想想在模块中做事而不将它们包装在一个if __name__ == '__main__'
或严重依赖魔法的项目中的项目(我想到了sh)。
于 2012-09-20T09:15:02.103 回答
2
我想用http://pycallgraph.slowchop.com/或 doxygen 构建调用图。
事实上,AST
模块和其他一些允许相对轻松的静态分析。我更想以某种方式执行动态分析(因为所谓的“func1”的值可能会改变,调用可能会变得完全不同)。
于 2012-09-20T09:44:40.177 回答