如果我想检查多个条件,我不能只使用多个if语句吗?例如:
a = 10
b = 20
if a == b:
print('equal')
if a < b:
print('less')
if a > b:
print('greater')
答案 0 :(得分:4)
使用多个if语句将评估条件的每个if
。由于示例中的条件是互斥的,因此可能会产生类似的结果。但是,如果a
或b
之间发生变化,则可能会出现另一种情况:
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
无法使用您的示例。