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.

def flow_rate(weight_diff, time_diff):

return weight_diff / time_diff

weight_diff = 0.5

time_diff = 3

flow = flow_rate(weight_diff, time_diff)

print('%.3f kg per second' % flow)

>>>

0.167 kg per second

Tipicamente, é útil conhecer a vazão em quilogramas por segundo. Outras vezes,

seria desejável usar as últimas medições para chegar a uma aproximação de

escalas de tempo maiores, como horas ou dias. Podemos implementar o novo

comportamento na mesma função adicionando um argumento para o fator de

escala de tempo.

def flow_rate(weight_diff, time_diff, period):

return (weight_diff / time_diff) * period

O problema é que agora precisamos especificar o argumento period toda vez que

a função é chamada, mesmo no caso mais comum de vazão por segundo (em que

o período é 1).

flow_per_second = flow_rate(weight_diff, time_diff, 1)

Para tornar a função um pouco menos poluída visualmente, podemos definir um

valor default para o argumento period.

def flow_rate(weight_diff, time_diff, period=1):

return (weight_diff / time_diff) * period

A partir de agora, o argumento period é opcional.

flow_per_second = flow_rate(weight_diff, time_diff)

flow_per_hour = flow_rate(weight_diff, time_diff, period=3600)

Isso funciona bem para valores-padrão mais simples. Para valores default

complexos, a coisa fica bem menos trivial – consulte o Item 20: “Use None e

docstrings para especificar argumentos default dinâmicos e específicos”).

A terceira razão para usar argumentos com palavras-chave é que eles oferecem

uma maneira poderosa de estender os parâmetros da função ao mesmo tempo em

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!