在Python 3中,尝试对字符串和int(例如1 > "1"
)进行排序会引发TypeError。
为什么比较字符串和int的相等性不会抛出错误? (例如1=="1"
)
将字符串与int进行比较有什么意义?
为什么JavaScript和SQL采用不同的方法?
答案 0 :(得分:5)
例如,这允许您拥有一个包含混合类型键的字典。
如果您无法比较1
和"1"
的相等性,则无法将它们用作同一字典中的键。
根据情况,你可以比较它们,它们总是compare unequal:
对象不需要具有相同的类型。如果两者都是数字,则将它们转换为通用类型。否则,不同类型的对象总是比较不相等,并且一致但是任意地排序。
答案 1 :(得分:5)
在不可比较的对象上排序TypeError
的原因是表示没有明智的答案,而不是任何关于它是否有用的预测。允许进行相等性测试是合理的,因为 (他们不是)。参见,例如,http://www.gossamer-threads.com/lists/python/dev/919516。
答案 2 :(得分:0)
语言的输入可能是强弱的(松散的)。更强的打字语言在同一操作中可以操作的类型越少。语言打字的弱点和强度没有确切的阈值 - 某些语言可能比其他语言具有更强的打字能力,而弱于另一种语言。 Python打字比JS强大得多。
==
实现为更少弱类型的操作。它可以比较不同类型,但您需要具有相同类型的两个值才有机会获得True
。 a == b #true
表示a
,b
是相同类型的对象,具有相同的值。 Python 3 中的>
<
作为强类型操作实现,无法在不同类型上执行。