私が持っているとしましょうB.py
import A
def F():
pass
def G():
pass
if __name__ == '__main__':
A.f()
そしてそれを実行すると、このようA.fに定義された関数のリストを出力したいと思いますB.py
./B.py
['F', 'G']
問題は、何を書くべきかということA.pyです。
def f():
???
このようなことをするので可能だと思われますdoctest。
更新ご回答ありがとうございますが、もう1つ制限事項について言及するのを忘れましimport BたA.py。
理由を説明してみましょう:A.pyMapReduceジョブを実行するためのライブラリです。スクリプトのさまざまな最後でいくつかをインポートAして実行するだけです。A.f次にA.f、定義した関数を分析し、サーバー上で実行します。したがってA.f、呼び出されたすべてのモジュールをインポートすることはできません。
それともできますか?関数はそれがどこから呼び出されたかを知ることができますか?
アップデート
def f():
module = sys.modules['__main__']
functions = inspect.getmembers(module, inspect.isfunction)
...