def cmp_ignore_case(s1, s2):
v1= s1.upper()
v2= s2.upper()
if v1 < v2:
return -1
if v1 > v2:
return 1
return 0 //为什么加和不加else的结果都是一样的,是程序本身问题还是语法问题?
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
最后的return语句块,为什么不需要加上else语句呢?在什么情况下是可以省略的呢?
我们有3个结果:
v1 < v2
v1 > v2
v1 = v2
而上面的程序已经有了判断v1 < v2 ,v1 > v2 。
当 v1 < v2 的时候,return -1,如果是v1 〉v2 则绕过首个return语句,继续执行 if v1 > v2 :语句,然后进入语句块return 1。
而如果v1 = v2 ,这个时候if v1 > v2 的语句不成立,跳过去,则执行第三个return,return 0.