推荐的Python(或任何语言)风格:在if语句返回时是否使用else?

2024-04-25 21:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

非常简单的问题:

特别是在Python中(因为Python实际上在PEP 8中指定了“强烈推荐”的样式准则,但实际上这适用于任何语言),一个带有始终返回的if子句的函数是否应该在else子句中包含替代代码?换句话说,下面这段代码中的func_style_one()和{}完全等价:

def func_style_one():
    if some_conditional_function():
        do_something()
        return something()
    else:
        do_something_else()
        return something_else()

def func_style_two():
    if some_conditional_function():
        do_something()
        return something()
    do_something_else()
    return something_else()

显然,最佳和最具可读性的样式取决于具体情况,意见将因哪种更好而有很大差异,但我想问的是,核心Python社区特别喜欢哪种样式。(例如,在标准库中,哪个更常用,所有其他条件都相同?)在


Tags: 代码returnifstyledeffunction样式some
1条回答
网友
1楼 · 发布于 2024-04-25 21:48:03

作为经验法则,您应该始终避免给代码添加不必要的复杂性,无论是哪种语言。尝试将代码分成语义上有意义的子部分也是一个好主意。在

考虑到这些启发,没有确切的答案。这其实可以归结为你想要达到的目标。在

我将用例子来说明这一点。在

如果我们有一个在继续之前检查各种错误条件的函数,那么不使用else来编写它是有意义的:

def do_stuff():
    if error1():
        return cleanup_and_fail()
    return ok()

这是更好的,因为您经常以类似的方式在一个序列中检查多个错误:

^{pr2}$

但是,如果您的函数分支为两个相等的分支,则它在语义上对您其他人更有意义:

def do_stuff():
    if option1():
        return do_option1()
    else:
        return do_option2()

这是因为您经常使用elif添加其他几个选项:

def do_stuff():
    if option1():
        return do_option1()
    elif:
        return do_option2()
    else:
        return do_option3()

总而言之:考虑代码的语义并相应地选择语法。在

相关问题 更多 >