如何判断调用函数时引用了啥? [复制]
Posted
技术标签:
【中文标题】如何判断调用函数时引用了啥? [复制]【英文标题】:How to tell what is referenced when a function is called? [duplicate]如何判断调用函数时引用了什么? [复制] 【发布时间】:2018-03-29 16:50:40 【问题描述】:当我在 python 中调用一个函数时,我如何知道会发生什么,例如,我已经导入了一个模块并想从中调用一个函数。我需要知道这个函数调用了哪些函数以及它们在执行时的位置。非常类似于回溯,但没有错误。 traceback.format_stack()
不起作用,因为我无法将它放在源代码中运行。任何想法如何使用它?
例子:
import amodule
#do something here?
amodule.some_method()
#or maybe here?
输出:
File <fname1> in line 13, in <module>
module.some_method()
File <fname2> in line 53, in <module>
module2.some_other_method()
等等
我怎样才能最好地做到这一点?
编辑: 我正在考虑的用途是有一个由多个文件组成的模块,这些文件相互引用。如果我想编辑一个特定的函数,我需要知道在哪里编辑什么。我宁愿不搜索源代码来找到发生在哪里的整个长链
【问题讨论】:
【参考方案1】:你可以使用Python Call Graph。
调用图显示了从哪里调用了哪些函数/方法。
或者,您可以在调试器中单步执行代码。
但我强烈建议阅读代码,并试图了解它的作用。
我宁愿不搜索源代码来找到发生在哪里的整个长链
没有神奇的捷径。阅读代码可以告诉你它是如何工作的。文档字符串和其他 cmets 甚至可能会告诉您 为什么 它以这种方式工作。为什么比如何更重要。
【讨论】:
请多解释一下?以上是关于如何判断调用函数时引用了啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章