将任何模块中定义的函数的文档字符串存储为字符串

Storing docstrings of functions defined in any module as String

因此,我必须从任何模块收集所有功能和 类 以及诸如此类的东西,并将它们显示在网页上。显示它们并不是困难的部分。困难的部分是检索文档字符串并将它们存储为字符串。我找到了几种方法来做到这一点,但它们并不完美。

为了详细说明,我必须完全按照 help() 函数在解释器中执行的操作。那就是只列出模块本身定义的 functions/classes 等的文档字符串,而不是导入的函数。我对 help() 它的工作原理知之甚少。

首先我尝试了这个:

functions_list = [o for o in getmembers(my_module) if isfunction(o[1])]
for f_name, func in function_list:
    print(func.__doc__)

这将获取模块字典的值,并且工作得很好。尽管如此,如果您导入某些内容,例如 from foo import thud,这将在 function_list 中将 thud 作为函数列出,这不是我想要做的。我的另一个想法是使用某种正则表达式,但我认为这太过分了。一定有更好的解决方案。 知道解决方案是什么吗?谢谢

可以使用pyclbr模块静态读取模块源码:

import pyclbr

for name, obj in pyclbr.readmodule_ex('my_module', ['/path/to/module']).items():
    if isinstance(obj, pyclbr.Function):
        print(name, getattr(my_module, name).__doc__)