Este é um pequeno artigo para iniciantes. Certamente você sabe que em Python para loops for
e a while
unidade é 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 else
está no mesmo nível do bloco for
e parece que esse é algum tipo de condição relacionada à própria lista; por exemplo, quando for
não encontrei nenhum registro. Mas é suficiente conhecer o principal segredo do bloco else
para loops para nunca mais perder tempo com ele:
O bloco else
após os loops não pertence ao próprio loop, mas ao operador break
!
De fato, o bloco else
será executado em qualquer caso, a menos que a execução do loop tenha sido interrompida pelo operador break
, return
ou 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á.