2015/04/13

Python筆記:int與str若作比較的話

在2.x版裡,

>>> 5 > '9'
False
>>> '5' > 9
True


在3.x版裡,

>>> 5 > '9'
Traceback (most recent call last):
  File "", line 1, in
TypeError: unorderable types: int() > str()
>>> '5' > 9
Traceback (most recent call last):
  File "", line 1, in
TypeError: unorderable types: str() > int()


3.x版的行為很好懂,int與str是不同型別,不能比較。

2.x版的比較規則有一堆,其中,若是數值型別與其他型別,數值型別會比較小,所以:

>>> 222 < '9'
True
>>> 3 < '-555'
True


不論int物件是哪個數值,不管str物件裡有什麼字串,int物件都小於str物件。其他不同型別的物件,比較也會有結果,但其行為隨實作不同而不同。

總而言之,不同型別最好不要做比較,除非你明確轉型。

1 comment: