15.12.2022 Views

Python Eficaz

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

que permanece compatível com os chamadores existentes. Isso permite oferecer

funcionalidade adicional a uma função existente sem que seja necessário alterar

o código chamador (que pode estar em muitos lugares), reduzindo a chance de

introduzir bugs.

Por exemplo, digamos que se queira estender a função flow_rate anterior para

calcular a vazão em outras unidades de massa além do quilograma. Isso pode ser

feito adicionando um novo parâmetro que permita definir uma taxa de conversão

para sua unidade preferida.

def flow_rate(weight_diff, time_diff,

period=1, units_per_kg=1):

return ((weight_diff / units_per_kg) / time_diff) * period

O valor-padrão para o argumento units_per_kg é 1, portanto o valor da massa

devolvida continua sendo expresso em quilogramas. Isso significa que todos os

chamadores atuais não verão nenhuma mudança no comportamento da função.

Novos chamadores a flow_rate podem especificar um novo argumento por

palavra-chave para obter o novo comportamento.

pounds_per_hour = flow_rate(weight_diff, time_diff,

period=3600, units_per_kg=2.2)

O único problema com essa técnica é que argumentos opcionais por palavrachave

como period e units_per_kg podem ainda ser especificados como

argumentos posicionais.

pounds_per_hour = flow_rate(weight_diff, time_diff, 3600, 2.2)

Informar argumentos opcionais posicionalmente pode ser confuso porque não

fica claro a que parâmetros os valores 3600 e 2.2 correspondem. A melhor

prática neste caso é sempre especificar os parâmetros opcionais usando seus

nomes (ou seja, por palavra-chave) e jamais passá-los como argumentos

posicionais.

Nota

Compatibilidade com implementações anteriores usando argumentos

opcionais por palavra-chave é crucial para funções que aceitam *args (consulte

o Item 18: “Reduza a poluição visual com argumentos opcionais ”). No

entanto, uma atitude ainda melhor seria usar apenas argumentos com

palavras-chave (consulte o Item 21: “Garanta a legibilidade com argumentos

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!