Python 使用 return 语句中列表中的内置所有函数

标签 python built-in

我有一个方法,它需要返回多次相等检查的结果。它是类的 __eq__ 方法的实现,它代表我的应用程序中的词汇。这是返回语句的代码:

return all((
    self.first_language_translations == other.first_language_translations,
    self.first_language_phonetic_scripts == other.first_language_phonetic_scripts,
    self.second_language_translations == other.second_language_translations,
    self.second_language_phonetic_scripts == other.second_language_phonetic_scripts
))

我已经使用 运算符测试了这种方式和另一种方式的运行时。 运算符稍快一些,可能是0.05秒。这似乎是合乎逻辑的,因为必须首先创建这些 bool 值的列表,然后运行一个函数,这可能比相应的 运算符所做的更多。但是,这可能会在我的应用程序运行时执行很多次。

现在我想知道,在这种情况下使用 all 是好还是坏做法,以及是否值得放慢速度,是否是一个好做法。我的应用程序都是关于词汇的,可能经常需要检查词汇列表中是否已经存在一个词汇或相同的词汇。它不需要非常快,我认为这可能是微优化,所以我想针对这种情况使用最佳实践。

这是内置 all 函数的好用法吗?

最佳答案

不,这不是 all() 的好用途,因为需要进行少量固定数量的比较,而 all() 甚至不是让您比使用 时更简洁地表示它。使用 and 更具可读性,并且您应该始终将可读性放在第一位,除非您已经进行了分析,并且性能实际上是一个问题。也就是说,在最坏的情况下,使用 and 确实会快一点,平均而言甚至更快,因为它会在第一个 False 上短路,而不是执行所有每次都会进行比较。

关于Python 使用 return 语句中列表中的内置所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32468505/

相关文章:

c++ - 理解 GCC 中的 std::pow 实现

python - 尝试在 python 中获取对象类型时出错

python - 将文本文件中的列写入 Excel 中的单独工作表中

python - 使用 beautifulsoup 中的 findAll 过滤结果

c - 如何向 GCC 提示某行在编译时不可达?

c - 如何使用内置函数在运行时检查 msr.le?

python - Raspberry Pi 3 上的 Google Assistant 段错误

python - 在 Jupyter Notebook 中导入 pyplot

python - Django & mypy : ValuesQuerySet type hint