一切都比没有更大吗?[复制]
-
19-09-2019 - |
题
这个问题在这里已经有答案了:
- python中小于负无穷大的数字? 1 个回答
Python 有内置数据类型吗? 除了 None
, ,其中:
>>> not foo > None
True
在哪里 foo
是那种类型的值?Python 3 怎么样?
解决方案
None
始终小于 Python 2 中的任何数据类型(请参阅 object.c
).
在 Python 3 中,这一点发生了改变;现在在没有合理的自然排序的情况下对事物进行比较会导致 TypeError
. 。来自 3.0“新内容”更新:
Python 3.0 简化了排序比较的规则:
排序比较运算符 (
<
,<=
,>=
,>
)提出一个TypeError
当操作数没有有意义的自然顺序时例外。因此,表达式如下:1 < ''
,0 > None
或者len <= len
不再有效,例如None < None
提高TypeError
而不是返回False
. 。一个推论是,对异构列表进行排序不再有意义——所有元素必须彼此可比较。请注意,这不适用于==
和!=
运营商:不同不可比较类型的对象总是彼此比较不相等。
这让一些人感到不安,因为做一些事情通常很方便,比如对包含一些内容的列表进行排序。 None
其中的值,并且有 None
值在开头或结尾处聚集在一起。 邮件列表上有一个关于此的主题 不久前,但最终的要点是 Python 3 试图避免对排序做出任意决定(这在 Python 2 中经常发生)。
其他提示
来自Python 2.7.5 来源 (object.c
):
static int
default_3way_compare(PyObject *v, PyObject *w)
{
...
/* None is smaller than anything */
if (v == Py_None)
return -1;
if (w == Py_None)
return 1;
...
}
编辑:添加了版本号。
不隶属于 StackOverflow