Python:elif还是新的if?

时间:2011-08-13 18:17:24

标签: python if-statement

最好使用:

if var in X:
    #do_whatever
elif (var in Y):
    #do_whatever2

或:

if var in X:
    #do_whatever
if var in Y:
    #do_whatever2

假设var不能同时包含X和Y ......是否有任何规则或常规做法?我应该使用elif吗?还是一个新的if?或者没关系??

编辑:很好的答案..但是,如果第一个语句(#do_whatever)以返回或中断结束,我可以这么说吗?在最后,其他条件将不会被测试,从而浪费系统资源或造成麻烦,可以做任何事情......我猜......

5 个答案:

答案 0 :(得分:16)

在某些情况下会有所不同。 见这个例子:

def foo(var):
    if var == 5:
        var = 6
    elif var == 6:
        var = 8
    else:
        var = 10

    return var

def bar(var):
    if var == 5:
        var = 6
    if var == 6:
        var = 8
    if var not in (5, 6):
        var = 10

    return var

print foo(5)        # 6
print bar(5)        # 10

答案 1 :(得分:5)

如果第一个句子为真,那么第二个语句是不可能的(就像这里的情况一样,因为你说var不能同时在X和Y中),那么你应该使用elif。否则,第二次检查仍然会运行,如果你知道它会变错,这会浪费系统资源。

答案 2 :(得分:2)

如果您需要执行这两项检查,则应使用两个单独的if。如果您想检查一个或订单,则应始终使用elif,因为

  • 效率更高。如果您的第一个条件成立,您将节省资源。
  • 如果两个条件均为真,则可能会出现意外错误。

性能方面,您还应该考虑首先测试最可能的情况。

答案 3 :(得分:2)

在不知道数据的情况下查看代码,然后elif案例明确表明了您的意图并且是首选。

两个if语句案例也难以维护,即使添加了评论,仍然需要检查它们。

答案 4 :(得分:1)

如果varX中都不能Y,那么您应该使用elif。这样,如果var in Xtrue,则您无需毫无意义地评估var in Y