ham*_*x0r 2 python inequality dictionary python-2.7
我的代码意外地使用不等式将dict与int进行比较,结果发现任何dict在测试时都会计算为大于int的值.
d = {'a': 1, 'b': 2}
d > 0
Out[20]: True
d > 10e99999999999999
Out[21]: True
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况而不是类型错误?
这种情况在Python 2.7上运行
除了不同的数字类型和不同的字符串类型之外,不同类型的对象永远不会相等; 这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果).
在Python的3.3文档反而这样的:
在将复数与另一个内置数值类型进行比较时,当对象具有无法比较的不同类型时,或者在没有定义的其他情况下,<,<=,>和> =运算符将引发TypeError异常排序.
从Python 3开始,意味着你所看到的内容不再可能,但是这样的比较会产生TypeError你想象的效果.