Python链式比较

时间:2014-06-03 14:51:41

标签: python django

我有这段代码:

if self.date: # check date is not NoneType
    if self.live and self.date <= now and self.date >= now:
         return True
return False

我的IDE说:看起来它应该简化,即Python链式比较。

什么是链式比较?如何简化?

4 个答案:

答案 0 :(得分:5)

链式比较的一个例子如下所示。

age = 25

if 18 < age <= 25:
    print('Chained comparison!')

请注意,在封面下方,这是exactly the same,如下所示,它看起来更好。

age = 25

if 18 < age and age <= 25:
    print('Chained comparison!')

答案 1 :(得分:4)

self.age <= now and self.age >= now

可以简化为:

now <= self.age <= now

但是,只有当self.age等于now时它才为真,我们才能将整个算法简化为:

if self.date and self.live and self.age==now:
   return True
return False

如果您想检查年龄是否在某个范围内,请使用链式比较:

if lower<=self.age<=Upper:
     ...

或者:

if self.age in range(Lower, Upper+1):
     ...

答案 2 :(得分:1)

您的代码可以而且应该简化为:

return self.date and self.live and self.date == now

这是因为:

  1. now <= self.date <= now在数学上等于self.date == now
  2. 如果根据条件是否为真返回布尔值,则只返回评估条件表达式本身的结果。
  3. 关于减少a <= b and b<= c:它与a <= b <= c相同;这实际上适用于任何其他运营商。

答案 3 :(得分:0)

要检查x 高级5低级20,您可以使用简化链比较,即:

x = 10
if 5 < x < 20:
   # yes, x is superior to 5 and x is inferior to 20
   # it's the same as: if x > 5 and x < 20:

以上是一个简单的示例,但我想它会帮助新用户开始使用python

中的简化链式比较