让我们说我有一个函数f:
def f():
...
是否有一种简单的方法可以找到f
输出中涉及的所有函数(源代码+路径)和类(源代码+路径)?例如,如果f
使用导入的函数g
来计算其输出,我们是否可以获得源g
+其路径?
也许python ast
或dis
库能够优雅地完成这项工作?
答案 0 :(得分:1)
不,因为该信息仅在执行f
时可用。假设您有以下f
:
def f(x):
return x.text()
x
是什么类型的?什么是text
?谁知道! f
不包含任何此类信息。
如果你实际上正在执行 f
,你可以找出f
依赖于特定执行的函数。例如,使用分析器,您可以执行
import cProfile
cProfile.runcall(f, x)
分析f(x)
的执行情况并查看被调用的内容。如果您需要更多信息,可以根据profile
模块构建一些内容来收集数据。但是,这仍然无法向您提供有关f
在您未测试的情况下会调用的内容的任何信息。