1. 程式人生 > >Python中字元和數字之間是怎麼比較大小的?

Python中字元和數字之間是怎麼比較大小的?

參考5. Built-in Types中的說明,CPython按照如下規則進行比較(自己的總結):

  1. 任何兩個物件都可以比較
  2. 相同型別的物件(例項),如果是數字型(int/float/long/complex),則按照簡單的大小來比較;如果是非數字型,且類(型)中定義了__cmp__(含__gt__,__lt__等)則按照__cmp__來比較,否則按照地址(id)來比較
  3. 不同型別的物件(例項),如果其中一個比較物件是數字型(int/float/long/complex等),則數字型的物件<其它非數字型的物件;如果兩個都是非數字型的物件,則按照型別名的順序比較,如{} < "abc"(按照"dict" < "str"),而"abc" > [1,2], "abc" < (1,2)。
  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"等
上面的回答是針對Python2.x,3.x的有較大的變化,如str和int比較時會丟擲異常等。

回到題目,字元和數字的比較符合規則3,所以數字<字元。舉個例子,如100和'a'(ord('a')=97),有
100<'a'