2012-02-20 24 views
2

當一個字符串被比較爲python內部時,字符串和整數比較爲ASCII碼然後進行比較或者它是怎麼樣的。我知道str> int但是內部比較怎麼樣發生。python中字符串和int的內部比較

「一」> 1

+3

可能的重複? http://stackoverflow.com/questions/9306285/how-does-python-compare-strings-and-integers – CppLearner 2012-02-20 06:30:22

+0

可能的重複[如何Python比較字符串和int?](http://stackoverflow.com/questions/ 3270680/how-do-python-compare-string-and-int) – jcollado 2012-02-20 07:27:44

回答

8

在你的榜樣,1 < "a"因爲 「我」 爲int之前的 「S」 爲string來按字母順序。

docs

對象不同的類型,除了不同的數字類型和 不同字符串類型,從未比較相等;這樣的對象被一致但是任意地排列爲 (以便排序異構陣列 產生一致的結果)。

我相信這是python 3中改變的東西之一(這裏你會得到TypeError)。


至於它是如何在CPython中完成的,除了數字以外的其他類型的對象按其類型名排序;不支持正確比較的相同類型的對象按其地址排序。 請注意,這是實施的一部分,不屬於該語言的一部分。

+0

+1爲細節和註釋,它是一個實現細節。 – 2012-02-20 06:33:18

-2

您應該檢查__gt__方法內置的字符串對象知道細節的來源,但我的猜測是,1使用str功能轉換爲字符串,然後再兩個進行比較。