函数多重返回类型的最佳实践

时间:2018-07-13 21:24:33

标签: python return return-value return-type

我只是从python开始,然后得到一个问题。设计一个函数返回多种类型的值是个好主意吗?我在坐下阅读了一些信息,并完全理解,遇到错误或不满足前提条件时,最好抛出异常。但是,如果没有错误,只是返回值的其他多种类型,该怎么办?它是一个伪函数,但是对于multi_value函数,如果我需要从函数访问值,则无需编写 multi_value()[0] 之类的东西 参考:https://docs.quantifiedcode.com/python-anti-patterns/maintainability/returning_more_than_one_variable_type_from_function_call.html

curl -X POST "https://sede.cordoba.es:4443/seleccion/web-empleo/faces/empleo.jspx" --data "oracle.adf.faces.FORM=_id2^&oracle.adf.faces.STATE_TOKEN=9^&event=^&source=_id63"

1 个答案:

答案 0 :(得分:0)

没有不同类型的想法是使您的函数更易于使用。如果调用者必须检查返回类型,则他会变得不必要地复杂,难以阅读并且容易出错。更糟糕的是:呼叫者可能根本不做检查,然后被意外发现。您展示了一个很好的示例:返回列表或标量值。如果您按照所示方式进行操作,则呼叫者必须编写类似

的内容
res = multi_value(x)
try:
    for i in res:
        do_something_with_res(i)
except TypeError:
    do_something_with_res(res)

鉴于您的函数确实不会抛出任何东西,这一切都会崩溃

for i in multi_value(x)
    do_something_with_res(i)

如果您还返回单个(或不返回)值作为列表。优势应该很明显。您可能会认为您对呼叫者有所帮助-但这不是真的。

对链接文章的一些评论:我认为他们在此问题上给出了一个次优的例子。该示例更多关于返回错误代码而不是引发异常,这有点不同。