稱爲比方說,我有B.py
房顫如何在模塊A定義獲得在B定義的函數列表中,如果房顫的B
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
做這樣的事情。
更新感謝您的回覆,但我忘了再提一個限制:我不想在A.py
中做import B
。
讓我試着解釋爲什麼:A.py
是運行MapReduce作業的庫。您只需導入A
並在腳本的各個末尾運行一些A.f
。然後A.f
分析你定義的功能,並在服務器上執行它們。所以A.f
無法導入它被調用的每個模塊。
或者可以嗎?函數能夠知道它從哪裏被調用?
更新
def f():
module = sys.modules['__main__']
functions = inspect.getmembers(module, inspect.isfunction)
...
可能重複(http://stackoverflow.com/questions/ 1106840/find-functions-displayed-defined-in-a-module-python) – kennytm