在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
。
答案 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)
有意识地定义排序和字典比较等操作。
运算符&lt;,&gt;,==,&gt; =,&lt; =和!=比较两个值 对象。对象不必具有相同的类型。如果两者都是数字, 它们被转换为普通类型。否则,对象不同 类型总是比较不相等,并且一致地排序但是 任意的。