[英]Python: Why does equality comparing an int with a string not throw an error?
在Python 3中,尝试对字符串和int(例如1 > "1"
)进行排序会引发TypeError。 为什么比较字符串和int的相等性不会抛出错误? (例如1=="1"
)将字符串与int进行比较有什么意义? 为什么JavaScript和SQL采用不同的方法?
例如,这允许您拥有包含混合类型键的字典。
如果您无法比较1
和"1"
的相等性,则无法将它们用作同一字典中的键。
事实上,你可以比较它们,它们总是比较不平等 :
对象不必具有相同的类型。 如果两者都是数字,则将它们转换为通用类型。 否则,不同类型的对象总是比较不相等,并且一致但是任意地排序。
排序在非可比较对象上引发TypeError
的原因是表示没有合理的答案 ,而不是任何关于它是否有用的预测。 允许一个平等的测试是明智的这一逻辑,insofaras 有回答“是两个不可比较的对象平等的吗?” (他们不是)。 参见,例如, http : //www.gossamer-threads.com/lists/python/dev/919516 。
语言的输入可能是强弱的(松散的)。 更强的打字语言在同一操作中可以操作的类型越少。 语言输入的弱点和强度没有确切的阈值 - 某些语言可能比其他语言具有更强的类型,而弱于另一种语言。 Python打字比JS强大得多 。
==
实现更少弱类型的操作。 它可以比较不同的类型,但您需要具有相同类型的两个值才有机会获得True
。 a == b #true
表示a
和b
是相同类型的对象,并且具有相等的值。 >
<
在Python 3中实现为强类型操作,无法在不同类型上执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.