私は多分、どの機能が別の特定の機能を呼び出すかを知ることができるのだろうかと思いましたか?例えば私はどの関数がPythonでターゲット関数を呼び出すのか把握できますか?
、我々はこのスクリプトを
>>> f2()
1
を実行すると
def f1(): print 1
def f2(): f1()
私たちは、私の目標f1
を呼び出すf2
知っている必要があります。それは可能ですか?
私は多分、どの機能が別の特定の機能を呼び出すかを知ることができるのだろうかと思いましたか?例えば私はどの関数がPythonでターゲット関数を呼び出すのか把握できますか?
、我々はこのスクリプトを
>>> f2()
1
を実行すると
def f1(): print 1
def f2(): f1()
私たちは、私の目標f1
を呼び出すf2
知っている必要があります。それは可能ですか?
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
>>>
を私はあなたが何をしたいと思いますどのようなスタックトレースを行うことです。これは、電話でも可能です。
traceback.print_exc()
もちろん、トレースバックをインポートする必要があります。
あなたは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
が得られます。 何かのように: def f2(f2) –
なぜこれを知る必要がありますか?関数が異なる振る舞いをする必要がある場合は、何をすべきかを指示するパラメータが存在する必要があります。 – Barmar
このスレッドを試してください:http://stackoverflow.com/questions/2529859/get-parent-function希望に役立つでしょう! –