Python 在函数docstring的Raises部分,是否也应该列出间接引发的异常?

Python 在函数docstring的Raises部分,是否也应该列出间接引发的异常?,python,exception,docstring,raise,Python,Exception,Docstring,Raise,例如: def foo(a): 如果a==10: 提出错误 返回1/a foo的docstring是否应该包含以下内容: ”引发: FooError:如果a等于10。 ZeroDivisionError:如果a等于0。 """ 或者它应该只列出函数本身引发的异常,即。e错误?欢迎任何关于更好的方法的见解,谢谢。TLDR:列出与代码用户相关的所有异常,无论实现如何 docstring指向函数/类的用户。就像一个合适的类接口一样,docstring不应该关心函数/类的实现细节。docstrin

例如:

def foo(a):
如果a==10:
提出错误
返回1/a
foo
的docstring是否应该包含以下内容:

”引发:
FooError:如果a等于10。
ZeroDivisionError:如果a等于0。
"""

或者它应该只列出函数本身引发的异常,即。e<代码>错误?欢迎任何关于更好的方法的见解,谢谢。

TLDR:列出与代码用户相关的所有异常,无论实现如何


docstring指向函数/类的用户。就像一个合适的类接口一样,docstring不应该关心函数/类的实现细节。docstring的内容应该只反映what,而不是how

这意味着在同一事物的不同实现之间,是否记录了错误不应该有所不同


考虑将引发错误的代码移动到帮助器:

类栏:
def foo(self,a):
如果a==10:
提出错误
返回1/a
def bar(自我,a):
自我拒绝(a,10)
返回1/a
def_拒绝(自我、价值、禁止):
如果值==禁止:
提出错误

foo
bar
在功能上等同于客户端代码。它们的内部验证逻辑只是一个实现细节,不会改变如何使用它们。

我明白你的意思,这是有道理的。然而,我想知道,作为docstrings的新手(是的…),如果还没有一种自动的方式,在
bar
(即
\u reject
)中调用函数时记录提升,那么这些函数也不会出现在
bar
中。我想这取决于您如何访问文档。我并不是真的专注于此。我用
help
函数做了一个小测试,从我所看到的,它没有显示在传递给它的函数的实现中调用的函数的docstring中找到的信息。因此,调用
帮助(bar)
不会告诉您
\u reject
的docstring中有什么内容。但是,我也不知道Sphinx之类的工具是否有帮助。@andreitoropean在Python中解析调用图是非常复杂的,更不用说从中推断类型和异常了。斯芬克斯并没有试图这样做。