将任何模块中定义的函数的文档字符串存储为字符串
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__)
因此,我必须从任何模块收集所有功能和 类 以及诸如此类的东西,并将它们显示在网页上。显示它们并不是困难的部分。困难的部分是检索文档字符串并将它们存储为字符串。我找到了几种方法来做到这一点,但它们并不完美。
为了详细说明,我必须完全按照 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__)