【发布时间】:2013-12-15 09:12:09
【问题描述】:
出于调试目的,我想知道是否可以在执行导入后查看您正在操作的命名空间和模块,并进一步查看调用函数的位置。
如果我的代码中有一个函数 f(x) 和一个相当复杂的结构,有没有办法在不到处添加打印的情况下查看 f(x) 的调用位置?
类似 f.print_occurance()
"f was called in function integrate"
"f was called in function linspace"
"f was called in function enumerate"
类似的事情。
关于第一个问题,假设我导入了一个模块“import somemodule” 现在,如果该模块导入了其他模块,我可以在不查找 somemodule.py(或其头文件,如果它存在于 c/cpp 中)的情况下查看已导入/使用的命名空间和模块。
对不起,如果这是一个新手问题,这似乎是我应该知道的错误处理和调试的基本技巧,但谷歌搜索没有返回任何有用的信息。
【问题讨论】:
-
如果 Python 中存在未捕获的异常,那么您将获得带有“回溯”的异常,该异常将为您提供所有这些信息......所以,我认为这有点不-question... [例如,尝试在您的解释器中输入
10 / 0] -
查看
inspect模块