我有一个方法,它需要返回多次相等检查的结果。它是类的 __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/