2013-07-30 50 views
0

以下代码从导入的模块打印每个函数的文档字符串。然而,结果包含了一些在模块中没有定义的功能,而是由模块导入。在python中,如何打印导入模块中定义的所有函数的文档字符串,而不导入导入模块本身导入的函数?

import inspect 
import my_module 

all_functions = inspect.getmembers(my_module, inspect.isfunction) 

for i in all_functions: 
    print i[0]   # print function name              
    print i[1].__doc__ # print docstring  

如何打印的模块中定义的函数的文档字符串?

回答

1

函数有一个__module__属性存储它们在其中定义的模块的名称。您可以检查它是否与您正在检查的模块相匹配。请注意,这经常会遗漏实际上是模块API的一部分的函数,但是它们是在不同的模块中定义的。例如,heapq.heappush.__module__ == '_heapq',因为该函数实际上定义在C模块_heapqimport *中,编入Python模块heapq

+0

太棒了,谢谢!必须将该函数转换为if语句中的'str'以执行检查:'if str(i [1] .__ module__)=='my_module':'(参考问题中的示例) – sgarza62