哪一条Python条件返回语句最具Python风格?

哪一条Python条件返回语句最具Python风格?,python,function,return,conditional,conventions,Python,Function,Return,Conditional,Conventions,在使用条件时,以下哪一项是使用Python返回内容的正确方法?这有关系吗?为什么 # OPTION 1 if conditional: return a else: return b # OPTION 2 if conditional: return a return b 正确的Python方法是: return conditional 还记得吗?:) 关于您编辑的问题,我将使用选项2,因为此解决方案节省了缩进级别。当您: return b 实际上是这样的:

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

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


# OPTION 2
if conditional:
    return a
return b
正确的Python方法是:

return conditional
还记得吗?:)


关于您编辑的问题,我将使用选项2,因为此解决方案节省了缩进级别。当您:

return b
实际上是这样的:

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

以上所说的,你可能想考虑用A代替:


a
conditional
b
都很好且简短时,这是一个非常简洁而优雅的选择。

我认为这可能是一个技巧性的问题。第一个在语法上不正确:

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

如果你解决了这个问题,那么它们在语法上都是有效的,在语义上都是有意义的。事实上,他们的意思是一样的。它们甚至会编译成几乎相同的代码,除了第一个代码可能会导致Python为第三个从未被调用的“从函数末尾掉下来”的情况生成一些额外的代码

但是,正如所解释的,这两种模式都是反模式的;根据需要,只需
返回有条件的
,或
返回bool(有条件的)


请注意,即使在计算
条件
引发异常的情况下,不同的可能性仍然是等效的(直到回溯的内容)-它们都会引发该异常。

其他是冗余的。我不确定您是否理解语法正确的含义。。或者你的老师可能不认为它们在语法上都是有效的。它们都是完全有效的,并且很可能产生相同的p代码。如果
conditional
是一个真正的布尔表达式(不仅仅是一个不同类型的布尔表达式),那么
return condition
会更清晰,尽管输出可能也相同。我修正了问题的标题,我的意思是哪一种是最具python风格的,或者是最好的实践方式。如果可以的话,+1000000000000。。。这是一个糟糕的模式(在OP中),我一直看到如果
条件的
没有生成严格的布尔值,并且您需要它,那么
返回bool(条件的)
假设
条件的
是一个布尔表达式。如果表达式返回的非布尔值将被解释为布尔值,则OP的构造(其中任何一个)都是必要的。@Sneftel:如果您显式需要较少的信息,则应返回较少的信息。你不妨问问为什么
bool
本身会丢弃这些信息。kindall的评论只是指出,如果你愿意,你可以选择这样做,而不需要像OP的代码那样增加额外的复杂性。这对N00B是个很好的建议。假设条件语句对它们有更多的影响,这个问题的布尔部分只是为了让问题变得清晰。我已经修好了。
if conditional:
    return True
else:
    return False