在Python中,None的计算结果小于零?

时间:2011-09-12 05:51:37

标签: python python-2.x

在Python中,None评估为小于零?

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> None < 0
True
>>> None == 0
False
>>> None > 0
False
>>>

这是预期的吗?

我猜想None要么等于零(通过类型强制),要么所有这些语句都会返回False

3 个答案:

答案 0 :(得分:13)

请参阅the manual

  

不同类型的对象,除了不同的数字类型和不同的字符串类型,从不比较相等;这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果)。

  

CPython实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

答案 1 :(得分:4)

来自the docs

  

CPython实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

NoneType的比较小于int,因为比较似乎区分大小写。

>>> type(0)
<type 'int'>
>>> type(None)
<type 'NoneType'>
>>> 'NoneType' < 'int'
True

答案 2 :(得分:3)

有意识地定义排序和字典比较等操作。

[引自Language Reference]

  

运算符&lt;,&gt;,==,&gt; =,&lt; =和!=比较两个值   对象。对象不必具有相同的类型。如果两者都是数字,   它们被转换为普通类型。否则,对象不同   类型总是比较不相等,并且一致地排序但是   任意的。