当前位置: 首页 > 面试题库 >

在Python中的另一个函数中获取调用者函数名称?

郎经纶
2023-03-14
问题内容

如果您有两个功能,例如:

def A
def B

并且A呼叫B,您能知道谁在B内部呼叫B时,例如:

def A () :
    B ()

def B () :
    this.caller.name

问题答案:

您可以使用检查模块获取所需的信息。它的堆栈方法返回帧记录列表。

  • 对于 Python 2, 每个帧记录都是一个列表。每个记录中的第三个元素是呼叫者名称。您想要的是:
    >>> import inspect
    

    def f():
    … print inspect.stack()[1][3]

    def g():
    … f()

    g()
    g


  • 对于 Python 3.5+ ,每个帧记录都是一个命名的元组,因此您需要替换
    print inspect.stack()[1][3]
    

    print(inspect.stack()[1].function)

在上面的代码上。



 类似资料:
  • 问题内容: 我的目标是为此激发一个应用程序的时序图,我需要在运行时提供有关调用方和被调用方类名称的信息。我可以成功检索调用者函数,但无法获得调用者类名称吗? 当我打印堆栈时,没有有关调用程序类的信息。那么有可能在运行时检索调用方类吗? 问题答案: 好吧,在按提示进行了一些挖掘之后,这是我得到的: 调用时: 给定文件: 不知道从其他对象调用该对象时的行为。

  • 我不明白为什么下面的代码会打印两次。我以为应该是个人和学生。当通过“a”对象调用printPerson()内部的getInfo()时,为什么要调用Person类内部的一个,为什么不调用Student类中的一个?提前谢谢。

  • 问题内容: 我可以在python3.2的全局范围内调用嵌套在另一个函数内的函数吗? 这是从外部func1()调用func2()的一种方法吗? 问题答案: 否,除非您返回该函数: 甚至

  • 我定义了一个名为marger的函数来查找两个参数(num1、num2)之间的较大数。现在,我想在另一个名为“最大”的函数中使用这个函数,这个函数获得一个数组并返回该数组的最大个数,但我被卡住了。有人能帮我吗?下面是我的代码:

  • 问题内容: 设置:我需要在程序中使用的每个功能都有一个文件。 在此程序中,我需要从外部文件调用该函数。 我试过了: 但是我得到了错误: ImportError:没有名为“ file.py”的模块;文件不是包 我该如何解决这个问题? 问题答案: 导入时无需添加任何内容。只需编写,然后使用调用函数。之所以可能不起作用,是因为它是Python的核心模块之一,所以我建议你更改文件名。 请注意,如果你尝试将

  • 问题内容: 我想知道如何获取函数调用者的绝对路径? 可以这样说: 在文件中我打电话; 是file中定义的函数。要求。那么,如何从节点中获取绝对路径? 问题答案: 这是一个如何使用stacktrace在节点中查找调用方文件的示例