我有一个方法,该方法需要返回多个检查是否相等的结果。它是__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.05S。这似乎是合乎逻辑的,因为必须先创建这些布尔值的列表,然后再运行一个函数,该函数可能比相应的and
运算符所能做的更多。但是,这可能会在我的应用程序运行时执行很多。
现在,我想知道,all
在这种情况下使用该方法是好是坏,是否值得减慢速度,这是一个好习惯。我的应用程序与可乐有关,可能经常需要检查可乐列表中是否包含可乐或相同的产品。它并不需要太快,我想这可能是微优化,所以我想在这种情况下使用最佳实践。
这是内置all
函数的好用法吗?
不,这不是很好的用法all()
,因为您要进行的比较少而固定的比较次数,all()
甚至不能让您比使用时更简洁地表示它and
。使用and
方法更具可读性,除非已进行概要分析并且性能实际上是一个问题,否则应始终将可读性放在首位。也就是说,and
在最坏的情况下使用确实确实要快一点,并且平均起来甚至更快,因为使用它会在第一次短路False
而不是每次都执行所有比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句