我知道菜鸟问题,但我需要确认它,因为这经常发生在我身上。elif:
如果您知道当前一个块为真时不会到达代码,那么使用有什么意义吗?例如。
if foo:
return x
elif bar:
return y
应该只是:
if foo:
return x
if bar:
return y
我知道菜鸟问题,但我需要确认它,因为这经常发生在我身上。elif:
如果您知道当前一个块为真时不会到达代码,那么使用有什么意义吗?例如。
if foo:
return x
elif bar:
return y
应该只是:
if foo:
return x
if bar:
return y
我可以看到至少三个喜欢的理由if/elif
:
if/elif
不会中断,但if/if
可能至少有两个选择的理由if/if
:
也就是说,这里有一些推荐阅读:
python解释器没有任何区别;事实上,这两个代码片段将在内部编译为相同的指令(编译器足够聪明,知道永远不会到达返回后的代码,并将else
完全优化部分。)。
这是风格和可读性的问题。
从 Python 解释器的角度来看,不,没有区别——或者至少在执行方面没有区别,尽管这两种构造的实现方式可能存在一些细微的差异。
但请记住,您不仅要写信给口译员,还要写信给口译员。您正在为其他程序员编写以便稍后阅读您的代码。写下你认为最清楚你的意图的任何东西。
如果您知道这不是真的,那么不要浪费口译员的时间来检查它。如果你使用if
它,每次都会被评估;但是,只有在前一个条件是elif
时才会评估。在这种情况下,您使用的是,因此您应该避免这种情况,但是根据返回更改逻辑流程是不好的。您应该拥有尽可能少的(最好只有一个)代码路径。此外,它提供了一个干净、可读的结构,并使代码路径明确。可读性很重要,显式优于隐式。if
False
return
多条IF
语句意味着您的代码将检查所有IF
条件,而在 的情况下elif:
,如果满足一个IF
条件,则不会检查其他条件。(正如已经向我指出的那样,只有在没有任何IF
语句必须return
来自代码块的情况下,这才是正确的)
在您的情况下,可以使用 multipleIF
语句。