首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Python有一个__ne__运算符方法,而不仅仅是__eq__?

为什么Python有一个__ne__运算符方法,而不仅仅是__eq__?
EN

Stack Overflow用户
提问于 2012-02-26 19:01:14
回答 3查看 4.2K关注 0票数 40

当你想让__ne__返回一些东西而不仅仅是__eq__的逻辑逆时,答案here给出了一个挥手的引用,但我无法想象任何这样的情况。有什么例子吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-27 01:12:17

SQLAlchemy就是一个很好的例子。对于外行来说,SQLAlchemy是一种对象关系映射,它使用Python表达式来生成SQL语句。在表达式中,例如

代码语言:javascript
复制
meta.Session.query(model.Theme).filter(model.Theme.id == model.Vote.post_id)

model.Theme.id == model.VoteWarn.post_id返回的不是一个布尔值,而是一个最终生成WHERE theme.id = vote.post_id这样的查询的对象。反之将产生类似于WHERE theme.id <> vote.post_id的结果,因此这两种方法都需要定义。

票数 31
EN

Stack Overflow用户

发布于 2012-02-27 01:09:32

一些库做一些奇特的事情,并且不会从这些操作中返回布尔值。例如,使用numpy:

代码语言:javascript
复制
>>> import numpy as np
>>> np.array([1,2,5,4,3,4,5,4,4])==4
array([False, False, False,  True, False,  True, False,  True,  True], dtype=bool)
>>> np.array([1,2,5,4,3,4,5,4,4])!=4
array([ True,  True,  True, False,  True, False,  True, False, False], dtype=bool)

当您将一个数组与单个值或另一个数组进行比较时,您会得到一个布尔数组,其中包含比较相应元素的结果。如果x!=y仅仅等同于not (x==y),那么就不能这样做。

票数 30
EN

Stack Overflow用户

发布于 2012-02-27 02:04:07

更一般地说,在many valued logic系统中,equalsnot equals不一定是彼此的完全相反。

最明显的例子是SQL中的True == TrueFalse == FalseNull != Null。虽然我不知道是否有任何特定的Python示例,但我可以想象它是在某些地方实现的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9452536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档