给出这样的代码:
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
Run Code Online (Sandbox Code Playgroud)
表达式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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何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
Run Code Online (Sandbox Code Playgroud)
f(a)
将继续得到评估,因为不能保证f(a)
每次都会返回相同的结果,因此Python不会假设它会.您可以result = f(a)
使用它来缓存它并result
代替它f(a)
.
如果这些if
块中的任何一个恰好是True
,那么之后的块将不会被测试.
归档时间: |
|
查看次数: |
1189 次 |
最近记录: |