11

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

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

4

3 回答 3

7

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

如果你不能比较1"1"求相等,你就不能将它们用作同一个字典的键。

就目前而言,您可以比较它们,并且它们总是比较不相等

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

于 2012-05-16T11:42:28.420 回答
6

对不可比较的对象进行排序的原因TypeError是表示没有合理的答案,而不是预测它是否有用。根据这个逻辑,允许相等性测试是明智的,因为有一个答案是“两个不可比较的对象是否相等?” (他们不是)。参见例如http://www.gossamer-threads.com/lists/python/dev/919516

于 2012-05-16T11:55:54.763 回答
1

语言打字的优缺点

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

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

于 2018-02-02T06:43:25.957 回答