2016-11-09 3 views
0

Я на самом деле новичок в python. Изучая это, я наткнулся на этот кусок кода.ключевое слово python continue переключает управление на ключевое слово finally

Официальный документ Python сообщает, что при столкновении с оператором continue управление переключается в начало цикла, но в этом случае оно переходит к окончательному утверждению и выполняется оттуда. Это ошибка в python или что? Может кто-нибудь, пожалуйста, объясните мне это? Благодарю.

def askint(): 

while True: 

    try: 
     val =int(input("pleas enter an integer ")) 
    except: 
     print ("it seems like you did'n enter an integer ") 
     continue 
    else: 
     print ("yep that's an integer thank you") 
     break 

    finally: 
     print ('control is now on finally me') 
    print ('i am also getting executed  ')  



askint() 
+0

Этого управления потоком. У вас есть 'try/except' в' while', а не только голый 'while' –

+0

Блок' '' finally''' * всегда * выполняется * после * каждого '' 'except''' и' '' else''' того же '' 'try'''. –

ответ

1

Об этом говорится в documentation for the continue statement:

Когда продолжают передает управление из Ьгу заявления с, наконец, п что, наконец, пункт выполняется, прежде чем действительно начать следующий цикл цикла.

(выделено мной)

Да, без настоящего в while петли, вы бы иметь SyntaxError выскакивают; поскольку continue находится внутри while, а finally всегда получает шанс на финализацию вещей; он запускается на выходе.

+0

, так что на самом деле код не использует правильный стиль? –

+0

Это не плохой дизайн, просто «наконец» на самом деле здесь не нужен. 'finally' следует использовать, если вы хотите выполнить какое-то действие по очистке; если вам не нужно это делать, вы не используете его @ sky_1 –

2

finally код всегда выполняется в try/except блоке.

continue не пропускает его (или это будет ошибкой в ​​python).

1

finally статья должно быть выполнено независимо от того, что происходит, и так оно и есть.

Вот почему это называется finally: это не имеет значения, что у вас есть пытались ли удалось или поднял кроме иона, это всегда выполняется.

0

наконец будет выполняться всегда в попытке/Зависит независимо от того, что является exception.I думает, что этот материал не поможет вам https://docs.python.org/2.5/whatsnew/pep-341.html

Смежные вопросы