在带有导入函数的模块上使用pydoc

时间:2016-01-12 09:11:32

标签: python import module pydoc

我创建了自己的模块X。首先,我从其他一些模块导入函数(例如from math import func)。我注意到当我用以下文件创建文档时:

pydoc -w X

结果文件还包含来自math模块的导入函数函数,这是不可取的(特别是如果我从多个模块导入许多函数,这就是我所做的)。

可以通过调用:

来避免
import math

但在这种情况下,我必须导入所有功能,然后使用math.func而不是func来调用它们。

还有另一种方法可以避免使用导入的函数填充我的文档,同时仍然可以使用from导入函数吗?

1 个答案:

答案 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() 的文档:

enter image description here

添加__all__并指定要在其中导出的函数名称:

__all__ = ['myfunc']  # visible names
from math import cos

def myfunc():
    """ documentation"""
    pass

您将'过滤掉'cos()功能,并且只有myfunc()的文档:

enter image description here

注意: __all__可以包含您脚本中使用的函数变量名称。 pydoc将区分这些并将它们分为两组:

  1. 功能
  2. 中的功能
  3. 数据中的变量