python中小于负无穷大的数字?

时间:2017-08-02 00:44:18

标签: python python-2.x

这在python2中是可能的:

None < float('-inf')

此外,总是返回

True

然而,在python3上,这会抛出

TypeError: unorderable types: NoneType() < int()

为什么None与python2的整数/浮点数相当?在python2中可以订购None是否有任何好处或应用?

1 个答案:

答案 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; ; - )