2017-02-10 5 views
-1

私は多分、どの機能が別の特定の機能を呼び出すかを知ることができるのだろうかと思いましたか?例えば私はどの関数がPythonでターゲット関数を呼び出すのか把握できますか?

、我々はこのスクリプトを

>>> f2() 
1 

を実行すると

def f1(): print 1 

def f2(): f1() 

私たちは、私の目標f1を呼び出すf2知っている必要があります。それは可能ですか?

+0

が得られます。 何かのように: def f2(f2) –

+0

なぜこれを知る必要がありますか?関数が異なる振る舞いをする必要がある場合は、何をすべきかを指示するパラメータが存在する必要があります。 – Barmar

+0

このスレッドを試してください:http://stackoverflow.com/questions/2529859/get-parent-function希望に役立つでしょう! –

答えて

0

inspect.getframeinfoおよびその他の関連する関数で調べることができます:

>>> 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 
>>> 
0

を私はあなたが何をしたいと思いますどのようなスタックトレースを行うことです。これは、電話でも可能です。

traceback.print_exc() 

もちろん、トレースバックをインポートする必要があります。

0

あなたはtraceback

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() 
[email protected]:~/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 
関連する問題