python2.7中不同類型之間的比大小


 

 

 

可以看到,字符串為空的時候也比數字類型大,這是因為python2.7中按照如下規則進行比較:

1、任何兩個對象都可以比較。

2、相同類型的對象(實例),如果是數字型(int/float/long/complex),則按照簡單的大小來比較;如果是非數字型,且類(型)中定義了__cmp__(含__gt__,__lt__等)則按照__cmp__來比較,否則按照地址(id)來比較

3、不同類型的對象(實例),如果其中一個比較對象是數字型(int/float/long/complex等),則數字型的對象<其它非數字型的對象;

     並且如果兩個都是非數字型的對象,則按照類型名的順序比較, tuple () > str > list [ ] > dict {} > number

4、對於自定義的類(型)實例,如果繼承自基本類型,則按照基本類型的規則比較(1-3)。否則,old-style class < new-style class, new-style class之間按照類型名順序比較,old-style class之間按照地址進行比較

5、bool類型是int的子類,且True=1, False=0,比較時按照1-4來比較,如True > -1, True < 4.2, True < "abc"等

 

 

 所以2.7如果沒注意類型的話可能踩坑:‘3’ > 300 // true

 

python 3.X 不支持str和數字類型對比,會報異常

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM