Python: elif 还是新 if?

9 投票
5 回答
2877 浏览
提问于 2025-04-16 23:32

使用哪个更好:

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

还是:

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

假设变量不能同时出现在X和Y中……有没有什么规则或者常见的做法?我应该用elif吗?还是用一个新的if?或者其实没什么区别??

补充:很棒的回答……但是我能不能说,如果第一个语句(#do_whatever)以return或break结束,那么在它结束时,另一个条件就不会被测试,这样会浪费系统资源或者引发问题,那这样做就没问题了……我想……

5 个回答

2

如果你对数据不太了解,直接看代码的话,elif的写法能清楚地表达你的意图,所以更推荐使用这种方式。

而两个if语句的写法就比较难维护,即使加了注释,还是得去检查代码,增加了麻烦。

5

如果第一个说法是真的,那么第二个说法就不可能是真的(在这里就是你说的变量不能同时在X和Y里),那么你应该用elif。否则,第二个检查还是会执行,这样就浪费了系统资源,因为你知道它一定是假的。

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

撰写回答