3

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

pydoc -w X

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

可以通过调用来避免:

import math

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

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

4

1 回答 1

5

查看源代码,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将区分这些并将它们分为两个不同的组:

  1. 函数中的函数
  2. 数据中的变量。
于 2016-01-12T09:22:38.230 回答