Att*_* O. 65 python python-datamodel python-3.x
是否有Python内置数据类型,除此之外None:
>>> not foo > None
True
Run Code Online (Sandbox Code Playgroud)
foo这个类型的值在哪里?Python 3怎么样?
Joh*_*lla 80
None始终小于Python 2中的任何数据类型(请参阅参考资料object.c).
在Python 3中,这已经改变了; 现在在没有合理的自然排序的情况下对事物进行比较会导致a TypeError.从3.0"什么是新的"更新:
Python 3.0简化了订购比较的规则:
排序比较操作符(
<,<=,>=,>)提出一个TypeError例外,当操作数没有意义的自然顺序.因此,这样的表达式:1 < '',0 > None或len <= len不再有效,并且如None < None提高TypeError,而不是返回False.一个必然结果是,对异构列表进行排序不再有意义 - 所有元素必须相互比较.请注意,这不适用于==和!=运算符:不同无比类型的对象总是相互比较不相等.
这会使一些人感到不安,因为它通常很方便地执行诸如对列表中包含某些None值的列表进行排序,并使None值在开头或结尾处聚集在一起.不久之前,邮件列表上有一个关于这个问题的帖子,但最终的一点是Python 3试图避免对排序做出任意决定(这在Python 2中发生了很多).
Tor*_*rek 29
从Python 2.7.5源代码(object.c):
static int
default_3way_compare(PyObject *v, PyObject *w)
{
...
/* None is smaller than anything */
if (v == Py_None)
return -1;
if (w == Py_None)
return 1;
...
}
Run Code Online (Sandbox Code Playgroud)
编辑:添加版本号.
| 归档时间: |
|
| 查看次数: |
10590 次 |
| 最近记录: |