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.

primeira parte da tupla (usando o underscore sozinho como nome de variável,

uma convenção do Python para variáveis que jamais serão usadas). O código

resultante não parece errado à primeira vista, mas isso é tão ruim quanto retornar

apenas None.

_, result = divide(x, y)

if not result:

print('Invalid inputs')

A segunda maneira, bem melhor, para reduzir esses erros é nunca retornar None.

Em vez disso, repasse a exceção para o chamador e deixe que ele lide com o

problema. Em nosso caso, a exceção ZeroDivisionError foi transformada

em ValueError para indicar ao chamador que os valores de entrada são ruins:

def divide(a, b):

try:

return a / b

except ZeroDivisionError as e:

raise ValueError('Invalid inputs') from e

Agora, o chamador deve tratar a exceção para o caso de valores incorretos de

entrada (e este comportamento deve obrigatoriamente ser documentado.

Consulte o Item 49: “Escreva docstrings para toda e qualquer função, classe e

módulo”). O chamador não precisa mais implementar um teste condicional no

valor de retorno da função. Se a função não gerar uma exceção, o valor de

retorno deve ser válido. O resultado do tratamento da exceção deve ser claro.

x, y = 5, 2

try:

result = divide(x, y)

except ValueError:

print('Invalid inputs')

else:

print('Result is %.1f' % result)

>>>

Result is 2.5

Lembre-se

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!