【发布时间】:2011-11-15 01:48:16
【问题描述】:
在 Python 中,None 的计算结果小于零?
ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> None < 0
True
>>> None == 0
False
>>> None > 0
False
>>>
这是预期的吗?
我猜想None 要么等于零(通过类型强制),要么所有这些语句都返回False。
【问题讨论】:
-
无论如何,在 Python 3 中你不能再这样做了。它会给你这个错误:
TypeError: unorderable types: NoneType() < int() -
@NullUserException:很高兴知道。因为这不是我期望从 Python 中获得的那种直观行为。
-
别忘了,即使它是动态类型的,Python 仍然是强类型的:即不执行隐式强制。
-
@Daniel 如果您将
bool与int进行比较(或者至少看起来如此),它们就是这样 -
为了扩展@NullUserException,布尔实际上被明确声明为整数常量
0和1的非常薄的包装器,带有特殊的__str__和__repr__。数学、逻辑和其他一切在两者上的工作方式完全相同,bool甚至是int的子类。这与1 + 1.0一样是隐式转换,导致浮点数。
标签: python python-2.x