为什么Python需要丰富的比较?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

对我来说有一段时间是困惑的:我们确实需要在Python中使用丰富的比较吗?

文档的一个片段:

事实x==y并不意味着这x!=y是虚假的。可能会形容我们需要丰富比较的场景。在这个场景中,我们可以制作__eq____ne__返回False禁用比较或任何其他目的。(我们可以通过使用来实现这个 __cmp__

提问于
用户回答回答于

NumPy的使用比较丰富的矢量化==!=<,等等,就像它与大多数其他运营商一样。例如

>>> x = numpy.array([1, 2, 3, 4, 5])
>>> y = numpy.array([2, 2, 1, 4, 4])
>>> x == y
array([False,  True, False,  True, False], dtype=bool)

例如,这对于将操作应用于x符合条件的单元格很有用:

>>> x[x==y] = 6
>>> x
array([1, 6, 3, 6, 5])
用户回答回答于

你甚至不需要返回布尔值。文档所要做的是让您对重载方法可以返回的内容有完全的自由; Python不强制执行__eq____ne__返回一致的布尔值。

如果你使用:

model1.column == model2.column

要么

model1.column != model2.column

要么

model1.column < model2.column

您使用返回值来构建SQL查询:

model1.filter(model1.column <= model2.column)

会导致SQL查询沿着以下几行进行:

select model1.*
from model1
left join model2 on model1.foreign_key == model2.primary_key
where
    model1.column <= model2.column

扫码关注云+社区

领取腾讯云代金券