一位 friend (低技能水平的休闲 Python 脚本编写者)让我查看一些代码。我注意到他有 7 个单独的陈述,基本上都说了。
if ( a and b and c):
do something
语句 a,b,c 都测试了它们是否相等或缺少设置值。当我查看它时,我发现由于测试的性质,我可以将整个逻辑 block 重写为 2 个分支,这些分支从未超过 3 个深度并且很少超过第一级(使最罕见的发生测试首先)。
if a:
if b:
if c:
else:
if c:
else:
if b:
if c:
else:
if c:
对我来说,从逻辑上讲,如果您进行更少、更简单的测试,这些测试会更快地失败并继续前进。 我真正的问题是
1) 当我说 if 和 else 时,如果 if 为真,那么 else 会被完全忽略吗?
2) 理论上会
如果(a和b和c)
花费与三个单独的 if 语句一样多的时间?
最佳答案
我会说单个测试与单独测试一样快。 Python 也使用所谓的 short-circuit evaluation .
这意味着对于 (a and b and c)
,如果 a
是 false
。
类似,如果你有一个 OR
表达式 (a or b)
并且 a
是 true
,b
永远不会被评估。
所以总而言之,分句不会更快地失败。
关于Python if 语句效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539116/