假设我有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
做这样的事情。
更新感谢您的回复,但我忘了再提一个限制:我不想import B
在A.py
.
让我试着解释一下为什么:A.py
是一个运行 MapReduce 作业的库。您只需在脚本的不同端导入A
并运行一些。A.f
然后A.f
分析您定义的功能并在服务器上执行它们。所以A.f
不能导入它被调用的每个模块。
或者可以吗?函数可以知道它是从哪里调用的吗?
更新
def f():
module = sys.modules['__main__']
functions = inspect.getmembers(module, inspect.isfunction)
...