15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

zip devolve uma lista de tuplas contendo o resultado de todas as iterações.

• zip trunca sua saída silenciosamente caso dois iteradores de tamanhos

diferentes sejam apresentados.

• A função zip_longest, presente no módulo nativo itertools, permite iterar

sobre iteradores múltiplos em paralelo sem se preocupar com seus tamanhos

(consulte o Item 46: “Use algoritmos e estruturas de dados nativos”).

Item 12: Evite usar blocos else depois de laços for e

while

Os laços do Python possuem um recurso extra que não está disponível em

nenhuma outra linguagem de programação: é possível colocar um bloco else

imediatamente após o bloco de código a ser repetido pelo laço.

for i in range(3):

print('Loop %d' % i)

else:

print('Else block!')

>>>

Loop 0

Loop 1

Loop 2

Else block!

Para nossa surpresa, o bloco else é executado imediatamente após o fim do laço.

Por que então essa cláusula é chamada de “else” (em português, “senão”)? Por

que não “and” (“e”)? Em uma estrutura if/else, o else significa “faça isso

somente se o bloco anterior não for executado”. Em uma estrutura try/except, o

except tem a mesma definição: “faça isso somente se o bloco anterior falhar”.

De forma semelhante, o else empregado em uma estrutura try/except/else segue

esse padrão (consulte o Item 13: “Use todo o potencial dos blocos

try/except/else/finally”) porque significa “faça isso se o bloco anterior não

falhar”. try/finally também é intuitivo porque significa, “sempre execute o bloco

de finalização depois de tentar o bloco anterior”.

Com todos os usos de else, except e finally em Python, um programador novato

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!