Python:为什么将int与字符串进行比较的等式不会引发错误?

e1i*_*i45 9 python types

在Python 3中,尝试对字符串和int(例如1 > "1")进行排序会引发TypeError.为什么比较字符串和int的相等性不会抛出错误?(例如1=="1")将字符串与int进行比较有什么意义?为什么JavaScript和SQL采用不同的方法?

相关: Python如何比较字符串和int?

NPE*_*NPE 6

例如,这允许您拥有包含混合类型键的字典.

如果你无法比较1"1"平等,你将无法将它们用作同一字典中的键.

事实上,你可以比较它们,它们总是比较不平等:

对象不必具有相同的类型.如果两者都是数字,则将它们转换为通用类型.否则,不同类型的对象总是比较不相等,并且一致但是任意地排序.

  • 但是(至少在 python 3 中)我可以用不可比较的对象创建字典。见 https://pastebin.com/4qPv95XM (2认同)

lvc*_*lvc 6

订单TypeError在不可比较的对象上提出的原因是表示没有合理的答案,而不是任何关于它是否有用的预测.允许一个平等的测试是明智的这一逻辑,insofaras没有回答"是两个不可比较的对象平等的吗?" (他们不是).参见,例如,http://www.gossamer-threads.com/lists/python/dev/919516.