0

想像してみましょうfoo.py、関数が宣言されたモジュールを持っていますfoofunc:

def foofunc():
    # smart things
    return

そして 2 つの異なるモジュール —bar.pyspam.py、モジュールから関数を直接実行するコードが存在しfooます。

# `bar` module. All rights reserved.

from foo import foofunc


def run_foofunc():
     return foofunc()

別のモジュールで同じこと:

# `spam` module. All rights reserved.

from foo import foofunc


def run_foofunc():
    return foofunc()

可能な場所を知らなくても、関数が実行される場所を知る必要があります。何かのようなもの:

def foofunc():
    print inspect.executedfrom()

標準出力でそのようなことをします

<pack.bar.run_foofunc>

現実の世界でも似たようなことはありますか?

4

4 に答える 4

2

実際の質問に答えないリスクを冒して、調査とデバッグに必要だと書いています。

tracebackモジュールはその点で優れていると思います。

import traceback
traceback.print_stack()

も見てpdbください。これにより、実行時にコードをインタラクティブにステップ実行できます。

于 2013-08-28T13:55:09.183 に答える