哪个Python条件返回语句最符合Python风格?
在使用条件语句时,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
当 a
、conditional
和 b
都很简短时,这是一种非常简洁优雅的替代方案。