我正在使用Sphinx从代码生成文档。有没有人知道是否有办法控制默认参数生成的浮点数的格式。
例如,如果我有以下功能:
def f(x = 0.97):
return x+1
生成的文档最终看起来像:
foo(x = 0.96999999999997)
显然这是一个浮点精度问题,但有没有办法让文档看起来不那么难看?
答案 0 :(得分:1)
您可以使用.. autofunction::
指令覆盖函数签名。因此,为了解决您的示例,在模块foo(x=0.97)
中定义为bar
的函数:
.. automodule:: bar
.. autofunction:: foo(x=0.97)
结果文档将使用提供的签名而不是解释版本与真正的长号。
您可以使用.. autoclass::
和.. automethod::
等等同等地执行此操作。这种用法记录在this part of the sphinx.ext.autodoc文档中的“选项和高级用法”中。
答案 1 :(得分:0)
我没有使用Sphinx,所以我不确定这是否有效,但我的假设是repr()
用于确定文档的格式。您可以尝试使用自定义float
方法对__repr__
进行子类化,该方法将返回一个更好看的数字,看看是否有帮助:
class my_float(float):
def __repr__(self):
return str(self)
>>> float(0.97)
0.96999999999999997
>>> my_float(0.97)
0.97
>>> def foo(x = my_float(0.97)):
... return x+1
...
>>> foo()
1.97