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.

• Funções que retornam None para indicar significados especiais estão fadadas

a erros porque o None, em conjunto com outros valores (por exemplo, o zero

ou uma string vazia), são todos interpretados como False em expressões

condicionais.

• Gere exceções para indicar situações especiais em vez de retornar None.

Assuma que o código chamador só conseguirá tratar corretamente as

exceções se você as documentar de forma apropriada.

Item 15: Saiba como closures interagem com os

escopos das variáveis

Digamos que se queira ordenar uma lista de números, mas priorizar um grupo de

números que venha primeiro. Esse padrão é útil ao renderizar uma interface de

usuário quando existirem mensagens importantes ou eventos excepcionais que

devem ser mostrados antes de qualquer coisa.

Uma maneira bastante popular de se fazer isso é passar uma função auxiliar

como o argumento key do método sort de uma lista. O valor devolvido pela

função auxiliar será usado como o valor para classificar em ordem cada item da

lista. A função auxiliar pode verificar se o item que está sendo avaliado está no

grupo preferencial e variar a chave de ordenação conforme o caso.

def sort_priority(values, group):

def helper(x):

if x in group:

return (0, x)

return (1, x)

values.sort(key=helper)

A função funciona muito bem para dados de entrada mais simples:

numbers = [8, 3, 1, 2, 5, 4, 7, 6]

group = {2, 3, 5, 7}

sort_priority(numbers, group)

print(numbers)

>>>

[2, 3, 5, 7, 1, 4, 6, 8]

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!