首页 > 为什么会不需要else

为什么会不需要else


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语句呢?在什么情况下是可以省略的呢?


因为 条件成立的时候就 return 了.


你在return后面写个语句试试


遇到return的时候,后面的程序就不执行了。


return 的时候就已经退出函数了
如果v1大于v2 return -1;后面的不会再执行
如果v1小于v2 return 1;后面的也不会再执行
只有v1等于v2时 回执行到return 0;


本身没什么对错问题,只是从易维护角度来讲,早用return更好读。请看return-statement


这个问题有点太小白了。有点让人无法回答。
v1 == v2时:

我感觉你的问题里已经包含了答案。


看了下前面的答案,我也是醉了!if~else语法上就允许这样写好么!


其实和 return 没有关系,本来这两个 if 的条件就是相互独立的,不可能存在同时符合两个 if 的情况,所以有没有 else 其实没什么关系。


def cmp_ignore_case(s1, s2):
    v1= s1.upper()
    v2= s2.upper()
    if v1 < v2:    
        return -1
    if v1 > v2:
        return 1
        

我们有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.

【热门文章】
【热门文章】