哪个Python条件返回语句是最Pythonic?

时间:2014-11-03 23:38:48

标签: python function return conditional conventions

使用条件时,使用Python返回内容的正确方法是以下哪一项?有关系吗?为什么?

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


# OPTION 2
if conditional:
    return a
return b

2 个答案:

答案 0 :(得分:14)

正确的 Python方式是:

return conditional

"Simple is better than complex"还记得吗? :)


关于您编辑过的问题,我会使用# OPTION 2因为"Flat is better than nested."而此解决方案会保存缩进级别。在以下情况下,您会对此表示赞赏:

return b

实际上是这样的:

return very_long_and_unwieldy_name_that_you_cannot_change

此外,在这种情况下else:是不必要的(语法上和视觉上)和冗余;它只是浪费空间。

也就是说,您可能需要考虑使用conditional expression代替:

return a if conditional else b

aconditionalb都很好而且很短时,这是一种非常简洁和优雅的选择。

答案 1 :(得分:0)

我认为这可能是一个棘手的问题。第一个是语法正确:

if conditional:
    return True
else
    return False

在Python中,else子句与引入套件的任何其他子句一样,必须以:字符结尾。

如果你解决了这个问题,那么它们在语法上都是有效的,并且在语义上都是有意义的。事实上,他们的意思是一样的。他们甚至可以编译成几乎相同的代码,除了第一个代码可能会导致Python为第三个代码生成一些额外的代码"从函数的末尾开始#34;永远不会被召唤的案件。

但是,正如iCodez's answer所解释的那样,这两种都是反模式;只是return conditionalreturn bool(conditional),视情况而定。

请注意,即使在评估conditional引发异常的情况下,不同的可能性仍然都是等效的(直到回溯的内容) - 他们全部都是只是举起那个例外。