1. ホーム
  2. python

[解決済み] Pythonで別の関数内の呼び出し側関数名を取得する?[重複しています]。

2022-05-09 14:04:50

質問

のように2つの関数がある場合。

def A
def B

で、AがBに電話をかけると、Bの中で誰が電話しているのかがわかる、みたいな。

def A () :
    B ()

def B () :
    this.caller.name

解決方法は?

を使用することができます。 検査する モジュールで、必要な情報を得ることができます。その スタック メソッドは、フレームレコードのリストを返します。

  • について Python 2 各フレームレコードはリストです。各レコードの3番目の要素は発信者名である。あなたが欲しいのはこれです。

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

    を上記のコードに追加してください。