我们能找出在python中哪个函数调用我的目标函数吗?

我们能找出在python中哪个函数调用我的目标函数吗?,python,Python,我想知道我们是否可以找出哪些函数调用另一个特定函数 比如说, def f1(): print 1 def f2(): f1() 当我们执行这个脚本时 >>> f2() 1 我们应该知道f2调用我的目标f1。这可能吗?和inspect中的其他相关功能可以帮助: >>> import inspect >>> def f1(): f2() ... >>> def f2(): ... curframe = inspec

我想知道我们是否可以找出哪些函数调用另一个特定函数

比如说,

def f1(): print 1 

def f2(): f1()
当我们执行这个脚本时

>>> f2()
1
我们应该知道
f2
调用我的目标
f1
。这可能吗?

和inspect中的其他相关功能可以帮助:

>>> import inspect
>>> def f1(): f2()
... 
>>> def f2():
...   curframe = inspect.currentframe()
...   calframe = inspect.getouterframes(curframe, 2)
...   print 'caller name:', calframe[1][3]
... 
>>> f1()
caller name: f1
>>> 

我想你要做的是做一个堆栈跟踪。这可以通过打电话来实现

traceback.print_exc()

当然,您需要导入回溯

您可以使用模块
回溯

def f():
    pass
    import traceback
    traceback.print_stack()
    print "Still working just fine"
    pass

def caller():
    f()

caller()
屈服

  File "traceback.py", line 12, in <module>
    caller()
  File "traceback.py", line 9, in caller
    f()
  File "traceback.py", line 4, in f
    traceback.print_stack()
makarchuk@makarchuk:~/Workspace$ python2 traceback.py 
  File "traceback.py", line 13, in <module>
    caller()
  File "traceback.py", line 10, in caller
    f()
  File "traceback.py", line 4, in f
    traceback.print_stack()
Still working just fine
文件“traceback.py”,第12行,在
调用方()
调用者中第9行的文件“traceback.py”
f()
文件“traceback.py”,第4行,在f中
traceback.print_stack()
makarchuk@makarchuk:~/Workspace$python2 traceback.py
文件“traceback.py”,第13行,在
调用方()
调用者中第10行的文件“traceback.py”
f()
文件“traceback.py”,第4行,在f中
traceback.print_stack()
还不错

您可以将调用器函数作为参数传递给函数。类似于:def f2(f2)为什么需要知道这一点?如果函数需要不同的行为,应该有一个参数告诉它该做什么,它不应该从哪个函数调用它。试试这个线程:希望它会有帮助!可能重复的