我正在使用Sphinx從代碼生成文檔。有誰知道是否有辦法控制從默認參數生成的浮點數的格式。獅身人面像浮點格式化
舉例來說,如果我有以下功能:
def f(x = 0.97):
return x+1
生成的文件最終看起來像:
foo(x = 0.96999999999997)
顯然,這是一個浮點精度的問題,而是有沒有辦法使文檔看起來不那麼難看?
我正在使用Sphinx從代碼生成文檔。有誰知道是否有辦法控制從默認參數生成的浮點數的格式。獅身人面像浮點格式化
舉例來說,如果我有以下功能:
def f(x = 0.97):
return x+1
生成的文件最終看起來像:
foo(x = 0.96999999999997)
顯然,這是一個浮點精度的問題,而是有沒有辦法使文檔看起來不那麼難看?
您可以覆蓋一個函數簽名與.. autofunction::
指令。因此,要解決你的榜樣,在模塊bar
定義爲foo(x=0.97)
功能:
.. automodule:: bar
.. autofunction:: foo(x=0.97)
,所得文檔將使用所提供的,而不是解釋版本與很長的數字簽名。
您可以等效地使用.. autoclass::
和.. automethod::
等。這是在this part of the sphinx.ext.autodoc文檔中的「選項和高級用法」中記錄的用法。
我還沒有使用獅身人面像,所以我不確定這是否可行,但我的假設是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
感謝您的回覆。我真的希望有一個文檔方面的解決方案,不包括修改實際的項目源。 – ctrlc