这在python2中是可能的:
None < float('-inf')
此外,总是返回
True
然而,在python3上,这会抛出
TypeError: unorderable types: NoneType() < int()
为什么None
与python2的整数/浮点数相当?在python2中可以订购None
是否有任何好处或应用?
答案 0 :(得分:7)
首先,Python 2允许比较所有类型的混合类型。这个疣最终是fixed in Python 3。
CPython实现细节:除了以外的不同类型的对象 数字按其类型名称排序;相同类型的对象 不支持正确比较的,按其地址排序。
对于None
一个quick decision was made by Guido and Tim Peters,它在Python 2.1中产生了这个commit(强调我的):
部分修复正在删除某些&#34;比较对象的情况 通过比较类型名称字符串&#34;来表示不同的类型。圭多&amp;我是 在当时的办公室,一个人对另一个说:&#34;怎么样
None
?通过比较字符串'None'
将其与其他类型进行比较 并没有多大意义。&#34; &#34;雅,好吧......如何将None
更改为 - by 默认 - 比较&#39;小于&#39;其他类型的物体?&#34; &#34;别看 为什么不 - 当然。&#34; &#34;好的,完成了!不超过2分钟的思考。没有意图 在这里迎合任何真实用例 - 唯一的目的是选择一些 任意但一致的规则,并没有像那样糟糕地完全 假装无是字符串&#34;无&#34; ; - )