【发布时间】: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的可排序性来创建简洁的代码。老实说,这就是提出这个问题的主要目的——找出如何应用这个问题。可能有点宽泛。
标签: python python-2.x