>>> 5 > '9'
False
>>> '5' > 9
True
在3.x版裡,
>>> 5 > '9'
Traceback (most recent call last):
File "
TypeError: unorderable types: int() > str()
>>> '5' > 9
Traceback (most recent call last):
File "
TypeError: unorderable types: str() > int()
3.x版的行為很好懂,int與str是不同型別,不能比較。
2.x版的比較規則有一堆,其中,若是數值型別與其他型別,數值型別會比較小,所以:
>>> 222 < '9'
True
>>> 3 < '-555'
True
不論int物件是哪個數值,不管str物件裡有什麼字串,int物件都小於str物件。其他不同型別的物件,比較也會有結果,但其行為隨實作不同而不同。
總而言之,不同型別最好不要做比較,除非你明確轉型。
多謝!
ReplyDelete