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