2013-10-13 52 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的文档。