您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python上关于错误与成功的返回值的最佳实践

python上关于错误与成功的返回值的最佳实践

首先,无论做什么都不会返回结果和错误消息。这是处理错误的一种非常糟糕的方法,并且会引起您无尽的头痛。 。

除非有必要,否则我通常会避免引发错误。在您的示例中,实际上并不需要抛出错误。将一个空列表与一个非空列表相交不是一个错误。结果只是空列表,这是正确的。但是,假设您要处理其他情况。例如,如果该方法具有非列表类型。在这种情况下,最好提出一个例外。没什么可害怕的。

我的建议是查看类似功能的Python库,并了解Python如何处理这些特殊情况。例如看一下集合中的交集方法,它往往是宽容的。在这里,我试图将一个空集与一个空列表相交:

>>> b = []
>>> a = set()
>>> a.intersection(b)
set([])

>>> b = [1, 2]
>>> a = set([1, 3])
>>> a.intersection(b)
set([1])

仅在需要时抛出错误

>>> b = 1
>>> a.intersection(b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable

当然,在某些情况下,成功或失败返回True或False可能会很好。但是保持一致非常重要。该函数应始终返回相同的类型或结构。具有可以返回列表或布尔值的函数非常令人困惑。或返回相同的类型,但是在发生错误的情况下此值的含义可以不同。

OP说:

我想返回一些内容以指示参数不正确。

没有什么比错误更能说明错误了。如果要指示参数不正确,请使用异常并输入有用的错误消息。在这种情况下返回结果只是令人困惑。在其他情况下,您可能希望指示什么都没有发生,但这不是错误。例如,如果您有一种方法可以从表中删除条目,而请求删除的条目不存在。在这种情况下,在成功或失败时仅返回True或False可能会很好。这取决于应用程序和预期的行为

python 2022/1/1 18:46:36 有327人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶