Skip to main content
 首页 » 编程设计

python之if elif 语句中的表达式评估

2025年05月04日16bhlsheji

给定这样的代码:

if f(a) == 1: 
    # do sth A 
elif f(a) == 2: 
    # do sth B 
elif f(a) == 3: 
    # do sth C 
else: 
    # do sth D 

表达式 f(a) 是否只执行/求值一次?或者它是否针对 if 或 elif 的每种情况执行/评估?此外,复合语句是否有任何区别:例如

if f(a) == 1: 
    # do sth A 
elif f(a) == 2 and a > 0: 
    # do sth B 
elif f(a) == 3 and a < 0: 
    # do sth C 
else: 
    # do sth D 

在这种情况下,f(a) 是如何求值的?对所有案例一次还是对每个案例单独一次?

请您参考如下方法:

测试一下:

In [7]: %paste 
def f(a): 
    print(a) 
 
a = 4 
 
if f(a) == 1: 
    pass 
elif f(a) == 2: 
    pass 
elif f(a) == 3: 
    pass 
else: 
    pass 
 
## -- End pasted text -- 
4 
4 
4 

f(a) 将继续进行评估,因为无法保证 f(a) 每次都会返回相同的结果,因此 Python 不会假设它会。您可以使用 result = f(a) 缓存它并使用 result 代替 f(a)。

如果这些 if block 中的任何一个恰好为 True,则不会测试其后的 block 。