2013-10-13 54 views
3

在Python(以及一般)中,字符串比較是做什麼的?如果我有以下代碼:字符串比較有什麼作用?

def com(a): 
    if a > 'banana': 
     print 'yes' 
    else: 
     print 'no' 

什麼會使「大於」「香蕉」?我對「比較」這個概念有點困惑。什麼是比較?

+6

一般來說,這將是一個詞典對比。 「A」<「B」,「AA」<「AB」,「ALPHA」>「ALPGZ」 –

+0

http://stackoverflow.com/questions/4806911/string-comparison-technique-used-by-python has a good答案 –

+0

因此,詞典的順序是否「顛倒」?例如,'zzzzzzz'實際上'大於''香蕉'? – user1691278

回答

2

它執行詞典字符串比較。

a > b 

將解析:

a.__gt__(b) 

在這種情況下astr型的,所以它實際上調用str.__gt__(b)a作爲綁定的實例。 「gt」代表「大於」。

x.__gt__(y)返回True如果x大於功能定義的y。如果gt沒有定義,它將回退到使用a.__cmp__(b)。根據比較結果返回-1,0,1。如果__cmp__未針對a類型定義,則會導致語法錯誤。

str有一個__gt__方法,所以它用於解決a > b。您可以爲任何自定義對象提供此方法。

請參閱有關富比較文檔lt, le, eq, ne, gt, ge以及cmp的文檔。