Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一切都比没有更伟大吗?_Python_Python 3.x_Python Datamodel - Fatal编程技术网

Python 一切都比没有更伟大吗?

Python 一切都比没有更伟大吗?,python,python-3.x,python-datamodel,Python,Python 3.x,Python Datamodel,除了None之外,还有Python内置的数据类型,,用于: >>> not foo > None True 其中foo是该类型的值?Python3怎么样?None总是小于Python2中的任何数据类型(请参阅) 在Python3中,这一点被改变了;现在,在没有合理的自然排序的情况下对事物进行比较会导致类型错误。从: Python 3.0简化了排序比较的规则: 当操作数没有有意义的自然排序时,排序比较运算符()会引发TypeError异常。因此,Python2.7.5so

除了
None
之外,还有Python内置的数据类型,,用于:

>>> not foo > None
True

其中
foo
是该类型的值?Python3怎么样?

None
总是小于Python2中的任何数据类型(请参阅)

在Python3中,这一点被改变了;现在,在没有合理的自然排序的情况下对事物进行比较会导致
类型错误。从

Python 3.0简化了排序比较的规则:


当操作数没有有意义的自然排序时,排序比较运算符(
)会引发
TypeError
异常。因此,Python2.7.5source()中的表达式如下:
1
0>None
len:


编辑:添加了版本号。

我想这是针对Python2.x的?感谢您澄清Python3的状态。我记得读过“最新消息”那一页,但我不记得这一页了。非常有趣,但它确实有意义……当然,只要定义清楚,就不必随意订购None。这种无缘无故的不兼容性正是采用Python 3花费如此长时间的原因。“定义良好”(行为的清晰、明确定义)与“任意”(基于谨慎做出的选择)是不同的。例如,你可以很容易地说“没有人比一切都伟大”。这同样是定义良好的,但仍然相当随意。事实上,允许在不可比较的类型之间进行比较非常方便(例如,输入健全性检查),而且在我看来,在比较数字和NaN时,让此类比较始终返回False,这似乎是合乎逻辑的。不幸的是,情况并非如此(例如,
None将“无”比“一切”小,比“将”比“一切”大。空字符串排在任何其他字符串之前,“零”排在任何正整数之前,因此直观地说,“无”类型排在任何其他类型之前。
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;
    ...
}