【问题标题】: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()

等等

我怎样才能最好地做到这一点?

编辑: 我正在考虑的用途是有一个由多个文件组成的模块,这些文件相互引用。如果我想编辑一个特定的函数,我需要知道在哪里编辑什么。我宁愿不搜索源代码来找到发生在哪里的整个长链

【问题讨论】:

    标签: python debugging


    【解决方案1】:

    你可以使用Python Call Graph

    调用图显示了从哪里调用了哪些函数/方法。

    或者,您可以在调试器中单步执行代码。

    但我强烈建议阅读代码,并试图了解它的作用。

    我宁愿不搜索源代码来找到发生在哪里的整个长链

    没有神奇的捷径。阅读代码可以告诉你它是如何工作的。文档字符串和其他 cmets 甚至可能会告诉您 为什么 它以这种方式工作。为什么比如何更重要。

    【讨论】:

    • 请多解释一下?
    猜你喜欢
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多