【发布时间】:2012-05-01 18:33:18
【问题描述】:
假设我有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 做了这样的事情。
更新感谢您的回复,但我忘了再说一个限制:我不想在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)
...
【问题讨论】:
标签: python introspection