在Python中,None的值小于零吗?

32 投票
3 回答
24118 浏览
提问于 2025-04-17 02:04

在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 个回答

3

这样做是为了让像排序和字典比较这样的操作变得明确和清晰。

[引用自语言参考]

运算符 <, >, ==, >=, <= 和 != 用来比较两个对象的值。这两个对象不一定要是同一种类型。如果它们都是数字,会被转换成一种共同的类型。否则,不同类型的对象总是被认为不相等,并且它们的比较顺序是一致但任意的。

5

来自文档的内容:

CPython实现细节:不同类型的对象(除了数字)会根据它们的类型名称进行排序;同一类型但不支持正常比较的对象则根据它们的地址进行排序。

NoneType在比较时被认为比int小,因为比较是区分大小写的。

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

请查看手册

不同类型的对象(除了不同的数字类型和不同的字符串类型)是不会被认为相等的;这些对象的排序是有规律的,但具体顺序是随意的(这样在对混合类型的数组进行排序时,结果是稳定的)。

还有:

CPython 实现细节:不同类型的对象(除了数字)是根据它们的类型名称进行排序的;同一类型但不支持正常比较的对象则是根据它们的内存地址进行排序。

撰写回答