elif的功能是什么?

时间:2015-06-18 22:16:59

标签: python

如果我想检查多个条件,我不能只使用多个if语句吗?例如:

a = 10
b = 20
if a == b:
  print('equal')
if a < b:
  print('less')
if a > b:
  print('greater')

1 个答案:

答案 0 :(得分:4)

使用多个if语句将评估条件的每个if。由于示例中的条件是互斥的,因此可能会产生类似的结果。但是,如果ab之间发生变化,则可能会出现另一种情况:

a = 5
b = 7
if a < b:
    a = b
if a == b:
    b += 1

这两个条件都评估为True并将被执行。这可能不是故意的,所以请使用:

a = 5
b = 7
if a < b:
    a = b
elif a == b:
    b += 1    

只会执行第一个条件。

即使以互斥条件为例,因为每个表达式都必须进行评估,这比第二个变种要慢。

注意elif(又名else if)与:

相同
if <cond1>:
    pass
else:
    if <cond2>:
        pass
    else:
        if <cond3>:
            pass

正如您所看到的,这将很快导致测试用完文本,并且可读性低于:

if <cond1>:
    pass
elif <cond2>:
    pass
...

这也更具表现力,因为读者不必检查条件是否相互排斥。语义从一开始就很清楚。

最后:

类似的东西:

i = 1
if i is None:
    k = 5
elif not (i <= 0):
    k = i

无法使用您的示例。