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

Python usage of built in all function on list in return statement

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

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
))

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

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

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

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