可以为特定函数重写Sphinx autodoc吗?

14 投票
1 回答
8776 浏览
提问于 2025-04-16 14:03

我正在使用Sphinx的自动文档插件,来自动生成一组模块的文档。我有一个函数,它可以接收多个参数(用*args表示),我想修改这个函数的文档,让它显示得更好看一些,像Python标准库文档那样,用funcname(arg1[, arg2[, ...]])的格式。

请问,有办法为某个特定的函数修改自动文档的输出吗?

1 个回答

20

你可以通过使用 autofunction 来覆盖一个函数的签名:

.. automodule:: yourmodule
   :members:
   :exclude-members: funcname

.. autofunction:: funcname(arg1[, arg2[, ...]])

不过,使用 autofunction 覆盖的函数签名不会和通过 automodule 引入的其他函数一起排序。如果你对每个函数都使用明确的 autofunction 指令,就可以解决这个问题:

.. autofunction:: firstfunc

.. autofunction:: funcname(arg1[, arg2[, ...]])

.. autofunction:: thirdfunc

补充说明

你还可以在文档字符串中添加内容:

.. autofunction:: funcname(arg1[, arg2[, ...]])

   Extra documentation here.  

如果你想同时覆盖签名和文档字符串,可以用 function 替代 autofunction

补充说明 2

你也可以通过在函数文档字符串的第一行写上签名来覆盖签名。详细信息请查看 这个回答

撰写回答