在 Python 3 中,尝试对字符串和 int 进行排序(例如1 > "1"
)会引发 TypeError。为什么比较字符串与 int 是否相等不会引发错误?(例如1=="1"
)将字符串与 int 进行比较有意义的示例是什么?为什么 JavaScript 和 SQL 采用不同的方法?
问问题
1459 次
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
表示a
和b
是相同类型的对象并且具有相同的值。>
<
在Python 3中实现为强类型操作,不能在不同类型上执行。
于 2018-02-02T06:43:25.957 回答