都大于无吗?

问题描述 投票:64回答:2

是否有Python内置数据类型,除了None,为此:

>>> not foo > None
True

其中foo是该类型的值吗? Python 3呢?

python python-3.x python-datamodel
2个回答
79
投票

[None始终小于Python 2中的任何数据类型(请参阅object.c)。

在Python 3中,这已更改;现在对没有合理自然顺序的事物进行比较会得出object.c。从TypeError

Python 3.0简化了排序比较的规则:

排序比较运算符(3.0 "what's new" updates<<=>=)在操作数没有有意义的自然排序时会引发>异常。因此,像TypeError1 < ''0 > None之类的表达式不再有效,例如len <= len升高None < None而不是返回TypeError。必然的结果是,对异构列表进行排序不再有意义-所有元素都必须彼此可比。请注意,这不适用于False==运算符:不同类型的对象始终比较彼此不相等。

这让某些人感到不安,因为通常很方便地执行诸如对其中具有一些!=值的列表进行排序,并且使None值在开始或结束时聚集在一起的列表的操作。 None前一阵子,但最终要点是Python 3试图避免对排序做出任意决定(这在Python 2中经常发生)。


28
投票

从Python 2.7.5源(There was a thread on the mailing list about this):

object.c

EDIT:添加的版本号。

© www.soinside.com 2019 - 2024. All rights reserved.