gpt4 book ai didi

python - 为什么 '' > 0 在 Python 2 中为真?

转载 作者:IT老高 更新时间:2023-10-28 21:43:35 26 4
gpt4 key购买 nike

在 Python 2.x 中:

>>> '' > 0
True

这是为什么呢?

最佳答案

允许对任意对象进行顺序比较的最初设计动机是允许对异构列表进行排序——这很有用,这将使所有字符串按字母顺序彼此相邻,所有数字按数字顺序彼此相邻,尽管语言不能保证这两个 block 中的哪一个先出现。例如,这允许在 O(N log N) 最坏情况时间

中仅获取任何列表中的唯一项(即使是具有不可散列项的项)

多年来,这种务实的安排逐渐被侵 eclipse 。当对复数进行排序比较的能力被取消时,第一次破解就出现了,在相当多的版本之前。突然,对任何列表进行排序的能力消失了:如果列表包含复数,可能还有其他类型的项目,它就不再适用了。然后 Guido 开始更普遍地不喜欢异构列表,因此开始认为这些列表是否可以有用地排序并不真正重要......因为这样的列表首先不应该存在,按照他的新思路。他没有做任何事情来禁止他们,但也不愿意接受任何妥协来支持他们。

请注意,这两项更改都使平衡稍微偏离了 Python 之禅的“实用性胜过纯度”项目(早先编写的,当时复数仍然可以进行顺序比较;-) – 纯度更高,实用性更低。

尽管如此,排序比较两个任意对象(只要两者都不是复数 ;-) 的能力仍然存在很长时间,因为大约在同一时间 Guido 开始真正坚持保持强大的向后兼容性(这是 < strong>既实用纯;-)。

所以,只有在 Python 3 中,它明确且有意地移除了强向后兼容性的约束,以允许一些长期渴望但向后不兼容的增强功能(特别是简化和移除过时的、冗余的方式来执行某些任务),该顺序比较不同类型的实例会出错。

所以这篇历史和哲学论文基本上是真正回答你的“为什么”问题的唯一方法......! :-)

关于python - 为什么 '' > 0 在 Python 2 中为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2384078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com