繁体   English   中英

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

[英]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采用不同的方法?

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

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

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

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

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

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

语言打字的优缺点

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM