O principal segredo do bloco else em loops de python

Este é um pequeno artigo para iniciantes. Certamente você sabe que em Python para loops fore a whileunidade é fornecida else. E há muita confusão com esse bloco, porque sua ação é à primeira vista pouco intuitiva. Você precisa gastar um pouco de tempo ou procurar na documentação toda vez que ela aparecer:



for f in files:
    if f.uuid == match_uuid:
        break
else:
    raise FileNotFound()


Quando haverá uma exceção: quando o arquivo não for encontrado? Quando foi encontrado? Quando a lista está vazia? É difícil responder a essa pergunta, porque o bloco elseestá no mesmo nível do bloco fore parece que esse é algum tipo de condição relacionada à própria lista; por exemplo, quando fornão encontrei nenhum registro. Mas é suficiente conhecer o principal segredo do bloco elsepara loops para nunca mais perder tempo com ele:



O bloco elseapós os loops não pertence ao próprio loop, mas ao operador break!



De fato, o bloco elseserá executado em qualquer caso, a menos que a execução do loop tenha sido interrompida pelo operador break, returnou raise.



Se você ler o exemplo acima, assim: "se o arquivo tiver o uuid de que precisamos, encerre o loop, caso contrário lance uma exceção", tudo se encaixará.




All Articles