Else clause on Python while statement

前端 未结 12 2274
悲&欢浪女
悲&欢浪女 2020-11-22 08:24

I\'ve noticed the following code is legal in Python. My question is why? Is there a specific reason?

n = 5
while n != 0:
    print n
    n -= 1
else:
    pri         


        
12条回答
  •  春和景丽
    2020-11-22 09:14

    My answer will focus on WHEN we can use while/for-else.

    At the first glance, it seems there is no different when using

    while CONDITION:
        EXPRESSIONS
    print 'ELSE'
    print 'The next statement'
    

    and

    while CONDITION:
        EXPRESSIONS
    else:
        print 'ELSE'
    print 'The next statement'
    

    Because the print 'ELSE' statement seems always executed in both cases (both when the while loop finished or not run).

    Then, it's only different when the statement print 'ELSE' will not be executed. It's when there is a breakinside the code block under while

    In [17]: i = 0
    
    In [18]: while i < 5:
        print i
        if i == 2:
            break
        i = i +1
    else:
        print 'ELSE'
    print 'The next statement'
       ....:
    0
    1
    2
    The next statement
    

    If differ to:

    In [19]: i = 0
    
    In [20]: while i < 5:
        print i
        if i == 2:
            break
        i = i +1
    print 'ELSE'
    print 'The next statement'
       ....:
    0
    1
    2
    ELSE
    The next statement
    

    return is not in this category, because it does the same effect for two above cases.

    exception raise also does not cause difference, because when it raises, where the next code will be executed is in exception handler (except block), the code in else clause or right after the while clause will not be executed.

提交回复
热议问题