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.

palavra-chave no Python 2, faça a função aceitar **kwargs. Depois, é possível

extrair os argumentos de palavra-chave do dicionário kwargs usando o método

pop, como se fosse uma pilha. O segundo argumento do método pop deve

especificar o valor default caso a chave não esteja presente. Por fim, certifiquese

de que nenhum outro argumento por palavra-chave tenha sido deixado em

kwargs para evitar que os chamadores passem argumentos inválidos.

# Python 2

def safe_division_d(number, divisor, **kwargs):

ignore_overflow = kwargs.pop('ignore_overflow', False)

ignore_zero_div = kwargs.pop('ignore_zero_division', False)

if kwargs:

raise TypeError('Unexpected **kwargs: %r' % kwargs)

# ...

Agora, podemos chamar a função com e sem argumentos por palavra-chave.

safe_division_d(1, 10)

safe_division_d(1, 0, ignore_zero_division=True)

safe_division_d(1, 10**500, ignore_overflow=True)

A tentativa de passar argumentos posicionalmente quando se espera que seja

especificada a palavra-chave não funcionará, semelhante ao que acontece no

Python 3.

safe_division_d(1, 0, False, True)

>>>

TypeError: safe_division_d() takes 2 positional arguments but 4 were given

A tentativa de passar uma palavra-chave não definida também causa erro.

safe_division_d(0, 0, unexpected=True)

>>>

TypeError: Unexpected **kwargs: {'unexpected': True}

Lembre-se

• Argumentos por palavra-chave tornam a intenção da função muito mais clara

no momento da chamada.

• Use argumentos que funcionem exclusivamente por palavra-chave para forçar

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!