我创建了自己的模块X
。首先,我从其他一些模块导入函数(例如from math import func
)。我注意到当我用以下文件创建文档时:
pydoc -w X
结果文件还包含来自math
模块的导入函数函数,这是不可取的(特别是如果我从多个模块导入许多函数,这就是我所做的)。
可以通过调用:
来避免import math
但在这种情况下,我必须导入所有功能,然后使用math.func
而不是func
来调用它们。
还有另一种方法可以避免使用导入的函数填充我的文档,同时仍然可以使用from
导入函数吗?
答案 0 :(得分:2)
查看Pydoc
的来源,您可以看到以下评论:
if all is not None:
# only document that which the programmer exported in __all__
return name in all
意味着pydoc
将查找__all__
模块属性,而(如果已定义)将仅记录其中定义的函数。
因此,对于模块X
,您可以通过指定名称来定义要在__all__
中导出的函数。只有那些将记录在相应的功能部分中:
__all__ = ['myfunc1', 'myfunc2', ..., 'myfuncN']
案例:
如果没有__all__
,则会出现以下名为mod.py
的简单文件:
from math import cos
def myfunc():
""" documentation"""
pass
生成mod.html
文件,其中包含导入的内置函数myfunc()
的用户定义cos()
和的文档:
添加__all__
并指定要在其中导出的函数名称:
__all__ = ['myfunc'] # visible names
from math import cos
def myfunc():
""" documentation"""
pass
您将'过滤掉'cos()
功能,并且只有myfunc()
的文档:
注意: __all__
可以包含您脚本中使用的函数和变量名称。 pydoc
将区分这些并将它们分为两组: