这些方法中的哪一个是在python中返回的正确方法?

时间:2019-02-06 05:38:26

标签: python

我有两个函数,它们基本上执行相同的操作,但是在发生异常的情况下返回的结果不同。首选哪一种方法?

方法1:

def f1():
    try:
        data = some_random_function()
        return data["success"]
    except Exception as error:
        print(error)
        return "failure"

方法2:

def f2():
    try:
        data = some_random_function()
        return data["success"]
    except Exception as error:
        print(error)
    return "failure"

4 个答案:

答案 0 :(得分:2)

尽管这两种方法是等效的,但我还是建议使用方法1。这更加清楚地表明,只有在出现异常时才返回“失败”。某些阅读方法2可能会给人留下第一印象,即它总是返回“失败”。严格来说,这是从干净的代码角度来看的。

答案 1 :(得分:1)

由于您具有通用的错误汇总功能,因此两种方法都是等效的,因为在发生异常的情况下,您将进入print "failure"分支。

我认为这取决于口味和将来的可维护性,即当您添加更多except分支以不同方式处理一些错误时,选择方法2。

答案 2 :(得分:1)

尽管两种方法的工作方式相同,即在无异常代码的情况下return data["success"]和在其他情况下return "failure"的工作方式相同,但这两种方法在传达信息的方式上有所不同:

A1 -如果出现异常,则返回“失败”

A2 -返回“失败”作为默认返回值。

因此,我建议您使用第二种方法,因为它更加清晰明了。

答案 3 :(得分:1)

一切都取决于个人喜好。对我来说,方法1比两种方法清晰得多,但两者都是很好的解决方案。我认为它不仅是个人喜好,而且是您正在使用的更多代码库。如果您与团队合作,请研究结构相似的代码,看看其他人做了什么。统一的代码库比在这里和那里的花哨的代码有价值得多。

对于具有功能范围的JavaScriptpython之类的语言,我想提出第三个选择:

def f3():
    try:
        data = some_random_function()
        message = "success"
    except Exception as error:
        print(error)
        message = "failure"
    return message