Python if 语句效率

标签 python performance

一位 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),如果 afalse

类似,如果你有一个 OR 表达式 (a or b) 并且 atrueb 永远不会被评估。

所以总而言之,分句不会更快地失败

关于Python if 语句效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539116/

相关文章:

Python:如何将索引范围作为参数传递

python - qt设计器如何创建彩色面板?

performance - 重复 W(n)= 2W(floor(n/2)) + 3

sql-server - 发布 Oracle 和 SQL Server 性能测试是否违反许可?

C++ 清除或删除 vector 的最快方法

python - 使用 npm-install --save 时出现错误 : Can't find Python executable . ..(系统变量已设置 python)

python - Python 中的“C 风格”字符串

python - 不可变类和 __copy__

performance - 所有分析器都会显着减慢执行速度吗?

php - 通过另一个表过滤重复项