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.

"""

if default is None:

default = {}

try:

return json.loads(data)

except ValueError:

return default

Agora, ao rodar o mesmo código de teste de antes, temos os resultados

esperados.

foo = decode('bad data')

foo['stuff'] = 5

bar = decode('also bad')

bar['meep'] = 1

print('Foo:', foo)

print('Bar:', bar)

>>>

Foo: {'stuff': 5}

Bar: {'meep': 1}

Lembre-se

• Os argumentos default são calculados apenas uma vez: durante a definição da

função no momento em que o módulo está sendo carregado na memória. Isso

pode causar comportamento imprevisível quando são usados valores

dinâmicos (como {} ou []).

• Use None como valor default para argumentos por palavra-chave que devam

assumir um valor dinâmico. Documente o comportamento-padrão na

docstring da função.

Item 21: Garanta a legibilidade com argumentos por

palavras-chave

O recurso do Python de passar argumentos de função por palavra-chave é

poderoso (consulte o Item 19: “Implemente comportamento opcional usando

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!