python中小于负无穷大的数字? [复制]

Posted

技术标签:

【中文标题】python中小于负无穷大的数字? [复制]【英文标题】:A number smaller than negative infinity in python? [duplicate] 【发布时间】:2018-01-09 00:32:50 【问题描述】:

这在 python2 中是可能的:

None < float('-inf')

而且,它总是返回

True

但是,在 python3 上,这会抛出

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

为什么None 可以与 python2 中的整数/浮点数相媲美? None 在 python2 中可订购有什么好处或应用吗?

【问题讨论】:

似乎是设计使然,至少。不知道为什么它有用:hg.python.org/cpython/file/ab05e7dd2788/Objects/object.c#l778 @AshwiniChaudhary 我不认为这是重复的。 None 总是小于任何整数,无论​​它们的引用如何。 @AshwiniChaudhary 好的,谢谢,就可以了。 Python 2 中的一切都是可比的。保证比较不同类型的对象是一致的,但标准不保证。 CPython 2 实现细节:“除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。” @juanpa.arrivillaga 骗子很好,但他们没有回答的一个问题是如何利用None 的可排序性来创建简洁的代码。老实说,这就是提出这个问题的主要目的——找出如何应用这个问题。可能有点宽泛。 【参考方案1】:

首先,Python 2 允许比较所有类型的混合类型。这个疣最终是fixed in Python 3。

CPython 实现细节:不同类型的对象,除了 数字按其类型名称排序;相同类型的对象 不支持正确比较的按地址排序。

对于None 和quick decision was made by Guido and Tim Peters,它在Python 2.1 中产生了这个commit(重点是我的):

修复的一部分是删除一些“比较对象 通过比较类型名称字符串来区分不同的类型”。Guido 和我是 当时两人都在办公室,一个人对另一个人说:“那怎么办? None?通过比较字符串 'None' 将其与其他类型进行比较 没有多大意义。” “是的,好吧......将None更改为- by 默认 - 比较“小于”其他类型的对象?" "看不到 为什么不 - 确定。” “好的,完成!

没有超过 2 分钟的思考时间。没有意图 为了满足这里的任何实际用例 - 唯一的目的是选择一些 任意但一致的规则并没有相当那么糟糕 假装 None 是字符串 "None" ;-)

【讨论】:

第二段的第二段是引用你的文字还是引用自同一个参考文献? 引用文字:mail.python.org/pipermail/python-dev/2014-February/132432.html

以上是关于python中小于负无穷大的数字? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python 数字系列-无穷大与NaN

在 Python 中,None 的计算结果小于零? [复制]

Python - 替换熊猫数据框中的负无穷大值[重复]

为啥 1 // 0.1 == 9.0? [复制]

这三个特殊的浮点值是啥意思:正无穷大、负无穷大、NaN?

Python 无穷大与NaN