[英]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.