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

Lui*_*isa 3 python import module pydoc

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

pydoc -w X
Run Code Online (Sandbox Code Playgroud)

生成的文件还包含从math模块中导入的函数函数,这是不可取的(尤其是当我从多个模块中导入许多函数时,我就是这样做的)。

可以通过调用来避免它:

import math
Run Code Online (Sandbox Code Playgroud)

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

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

Jim*_*ard 5

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

if all is not None:
     # only document that which the programmer exported in __all__
     return name in all
Run Code Online (Sandbox Code Playgroud)

这意味着pydoc 将查找__all__模块属性如果定义,将只记录其中定义的函数。

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

__all__ = ['myfunc1', 'myfunc2', ..., 'myfuncN']
Run Code Online (Sandbox Code Playgroud)

案例:

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

from math import cos

def myfunc():
    """ documentation"""
    pass
Run Code Online (Sandbox Code Playgroud)

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

                在此处输入图片说明

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

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

def myfunc():
    """ documentation"""
    pass
Run Code Online (Sandbox Code Playgroud)

您将“过滤掉”该cos()函数,并且只有以下方面的文档myfunc()

                      在此处输入图片说明


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

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