为什么x in(1,2,3):比x == 1或x == 2或x == 3快?

迈克尔·威尔斯

根据http://pylint.pycqa.org/zh-CN/latest/whatsnew/2.0.html的介绍,in选项比multis命令快。

从网站报价

添加了新的检查,考虑使用。

当将变量与由ors串联的多个值进行比较而不是使用更快,更惯用的“ in”检查时,将发出此重构消息。

如果变量== 1或变量== 2或变量== 3:#错误通过

如果变量在(1、2、3)中:#合格

首先,in选项更快吗?因为肯定它必须执行与多个ors相同的操作,并且每次创建元组的内存代价都不值得吗?

user2357112支持Monica

一方面,有一个恒定折叠的优化将预先计算恒定的元组,因此in (1, 2, 3)不会花费每次构建整个元组的代价。in实际上,无需每次都构建元组,该方法实际上具有较少的字节码解释开销,并且比该==方法运行得更快

另一方面,这仅适用于常量元组。in当元组不是编译时常量时,它通常会变慢,例如in (x, y, z)consider-using-in即使在in速度较慢的情况下,Pylint也会报告

我认为Pylint甚至会consider-using-inin可能更改代码含义的情况下进行报告,例如x == 1 or x == thing_with_side_effects()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档