Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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
使用算术运算符将None与内置类型进行比较? win32上的Python 2.7.2(默认值,2011年6月12日14:24:46)[MSC v.1500 64位(AMD64)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>无>0 假的 >>>无==0 假的 >>>无排序([2,1.5,2.5])[1.5,2,2.5]>>>排序([2,1.5,2.5,'bla 2','2','2.5',无])回溯(最后一次调用):文件“”,第1行,在TypeError:unorderable types:str()_Python_Comparison_Cpython - Fatal编程技术网

使用算术运算符将None与内置类型进行比较? win32上的Python 2.7.2(默认值,2011年6月12日14:24:46)[MSC v.1500 64位(AMD64)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>无>0 假的 >>>无==0 假的 >>>无排序([2,1.5,2.5])[1.5,2,2.5]>>>排序([2,1.5,2.5,'bla 2','2','2.5',无])回溯(最后一次调用):文件“”,第1行,在TypeError:unorderable types:str()

使用算术运算符将None与内置类型进行比较? win32上的Python 2.7.2(默认值,2011年6月12日14:24:46)[MSC v.1500 64位(AMD64)] 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>无>0 假的 >>>无==0 假的 >>>无排序([2,1.5,2.5])[1.5,2,2.5]>>>排序([2,1.5,2.5,'bla 2','2','2.5',无])回溯(最后一次调用):文件“”,第1行,在TypeError:unorderable types:str(),python,comparison,cpython,Python,Comparison,Cpython,与None一起使用的唯一有意义的比较是如果obj没有:(或者如果obj没有:) Python3中删除了不同类型之间的比较,这是有充分理由的——它们是常见的错误源,并导致混淆。比如说 Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >&

None
一起使用的唯一有意义的比较是
如果obj没有:
(或者
如果obj没有:

Python3中删除了不同类型之间的比较,这是有充分理由的——它们是常见的错误源,并导致混淆。比如说

Python 2.7.2 (default, Jun 12 2011, 14:24:46) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> None > 0
False
>>> None == 0
False
>>> None < 0
True
(我的意思是“比较”,即试图确定两个值中哪一个更大/更小。相等比较是可以的-如果两个对象的类型不同,它将始终返回
False
。)

我在文档中没有找到这方面的参考资料,但在中,Mark Lutz在第204页写道:

[…]不同类型对象(例如字符串和字符串)的比较 列表)工作-该语言定义了不同工作之间的固定顺序 类型,这是确定的,如果不美观。就是, 排序基于所涉及类型的名称:所有整数 小于所有字符串,例如,因为
“int”
小于
“str”


一些有趣的引用

在早期的Python中,决定将 两个对象是合法的,将返回一致的结果。所以物体 不同类型的将根据其上的顺序进行比较 类型(依赖于实现的、未指定但一致的 排序),并根据 对该类型有意义的规则

其他实现有权比较整数和无 不同的是,但在具体的实现中,结果将不会改变 改变

Python3将在此类比较中引发一个异常

这是一个典型的问题;Python最初没有一个 Boolean类型,并且改进导致了奇怪的语义。C有 同样的问题


==
=
通常是安全的,但是你应该使用
is None
is not None
来处理单身人士,如@ThiefMaster所说的
None
。问题的关键是安全在这里意味着什么。我很清楚应该使用
is
来与
None
进行比较,但问题是具体的,并不询问应该使用哪个操作符。重复:为什么
None<0
是真的技术原因是什么?@wim:
None
是Python 2中的“最低类型”,所以
None
总是比任何
int
都要低,而int总是比任何
str
等都要低。@piotrdorgost:不知道,但我引用了Mark Lutz的书《学习Python》(强烈推荐)。(…)该语言定义了不同类型之间的固定顺序(…),即,排序基于所涉及类型的名称,与(…)冲突。不同类型的对象将根据其类型的排序进行比较(依赖于实现,(…)在wim的回答中引用。真相在哪里?@batbrat:对不起,我是说平等。谢谢你发现了这个错误。修复了。这真的很糟糕。另一个尽可能长时间避免使用Python 3的原因。所以你现在不能对异类对象列表进行排序…
>>排序([2,1.5,2.5])[1.5,2,2.5]>>>排序([2,1.5,2.5,'bla 2','2','2.5',无])回溯(最后一次调用):文件“”,第1行,在TypeError:unorderable types:str()
。我认为作为首选python 3的一个原因。
排序([2,1.5,2.5,'bla','2','2.5','None])的预期结果是什么?@TomaszGandor在2021@moveaway00-
[None,1.5,2,2.5,'2','2.5','bla']
,如果不检查,我至少会说,
None
应该放在第一位(以及字符串之前的数字?这也有一定道理)。@jtlz2-是的,从那以后发生了很大的变化。其中一件事就是古老的Python 3.6。
>>> "3" < 4
False
>>> None < 0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()