哪个Python条件返回语句最符合Python风格?

18 投票
2 回答
35268 浏览
提问于 2025-05-01 10:38

在使用条件语句时,Python中返回东西的正确方式是什么?这重要吗?为什么?

# OPTION 1
if conditional:
    return a
else:
    return b


# OPTION 2
if conditional:
    return a
return b
暂无标签

2 个回答

1

我觉得这个问题可能有点绕。第一个例子在语法上是不正确的:

if conditional:
    return True
else:
    return False

在Python中,else 语句后面必须加一个:符号,这样才能正确结束。

如果你把这个问题修正过来,那么这两个例子在语法上都是有效的,而且它们的意思也是一样的。实际上,它们的功能是相同的。编译后生成的代码几乎也一样,只是第一个例子可能会让Python生成一些额外的代码,用于处理一种“函数结束后没有被调用”的情况。

不过,正如iCodez的回答所说,这两种写法其实都是不推荐的;你只需要用return conditional,或者根据情况用return bool(conditional)就可以了。

需要注意的是,即使在评估conditional时出现异常,这两种写法的结果也是相同的(只不过会有不同的错误追踪信息)——它们都会抛出那个异常。

30

正确的Python写法应该是:

return conditional

记得那句“简单胜于复杂”吗?这句话很重要哦! :)


关于你修改后的问题,我会选择 # OPTION 2,因为“扁平结构比嵌套结构更好”。 这个方法可以节省一个缩进层级。当你看到以下代码时,你会觉得这样更好:

return b

实际上是这样的:

return very_long_and_unwieldy_name_that_you_cannot_change

而且,在这种情况下,else: 是不必要的(无论是从语法上还是视觉上),它只是多余的,浪费了空间。

话虽如此,你可能想考虑使用条件表达式来替代:

return a if conditional else b

aconditionalb 都很简短时,这是一种非常简洁优雅的替代方案。

撰写回答