简体   繁体   English

重构多个相等检查的最pythonic方法

[英]Most pythonic way to refactor multiple equality checks

Given an if statement like:给定一个 if 语句,如:

if response.status == SUCCESS or \
   response.status == FAILURE or \
   response.status == CLEAR or \
   response.status == READY:

Is it better to refactor like (1):像 (1) 那样重构是否更好:

if any(response.status == status for status in (SUCCESS, FAILURE, CLEAR, READY):

Or (2):或(2):

if response.status in {SUCCESS, FAILURE, CLEAR, READY}:

My hunch is that 1 is better as it is more transparent (if not also more readable), but 2 is more concise and avoids having to iterate through each item in the tuple.我的预感是 1 更好,因为它更透明(如果不是也更易读),但 2 更简洁并且避免必须遍历元组中的每个项目。

You could use tuple or list like this, no need to iterate.您可以像这样使用元组或列表,无需迭代。 (Python3.7) (Python3.7)

>>>'SUCCESS' in ('SUCCESS', 'FAILURE', 'CLEAR', 'READY')
True

your case你的情况

if response.status in (SUCCESS, FAILURE, CLEAR, READY):

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM