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

Using pydoc on modules with imported functions

我已经创建了自己的模块X。一开始,我从其他一些模块(例如from math import func)导入函数。我注意到当我创建文档时:

pydoc -w X

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

可以通过调用来避免:

import math

但在这种情况下,我必须导入所有函数,然后使用 math.func 而不是仅 func.

调用它们

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

查看 Pydoc 的源代码,您可以看到以下评论:

if all is not None:
     # only document that which the programmer exported in __all__
     return name in all

意味着 pydoc 将查找 __all__ 模块属性 ,并且 如果已定义,将仅记录定义的函数在里面。

因此,对于您的模块 X,您可以通过指定名称来定义要在 __all__ 中导出的函数。只有那些会记录在相应的 Functions 部分:

__all__ = ['myfunc1', 'myfunc2', ..., 'myfuncN']

案例:

没有 __all__,以下名为 mod.py 的简单文件:

from math import cos

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

生成一个 mod.html 文件,其中包含用户为导入的 built-in 函数定义的 myfunc() 的文档 cos():

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

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

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

您将 'filter out' cos() 函数并且只有 myfunc():

的文档


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

  1. 函数中的函数
  2. 数据中的变量