在return语句

时间:2015-09-08 22:57:01

标签: python built-in

我有一个方法,需要返回多次检查的结果是否相等。它是类的__eq__方法的实现,它表示我的应用程序中的vocable。以下是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的,并且可能经常需要检查,无论是vocable还是相同的一个已经在vocables列表中。它不需要超快,我认为这可能是微优化,所以我想在这种情况下使用最佳实践。

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

1 个答案:

答案 0 :(得分:1)

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