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

时间:2012-05-16 11:39:53

标签: python types

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

相关: How does Python compare string and int?

3 个答案:

答案 0 :(得分:5)

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

如果您无法比较1"1"的相等性,则无法将它们用作同一字典中的键。

根据情况,你可以比较它们,它们总是compare unequal

  

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

答案 1 :(得分:5)

在不可比较的对象上排序TypeError的原因是表示没有明智的答案,而不是任何关于它是否有用的预测。允许进行相等性测试是合理的,因为 (他们不是)。参见,例如,http://www.gossamer-threads.com/lists/python/dev/919516

答案 2 :(得分:0)

语言输入的优缺点

语言的输入可能是强弱的(松散的)。更强的打字语言在同一操作中可以操作的类型越少。语言打字的弱点和强度没有确切的阈值 - 某些语言可能比其他语言具有更强的打字能力,而弱于另一种语言。 Python打字比JS强大得多

==实现为更少弱类型的操作。它可以比较不同类型,但您需要具有相同类型的两个值才有机会获得Truea == b #true表示ab是相同类型的对象,具有相同的值。 Python 3 中的> <作为强类型操作实现,无法在不同类型上执行。