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.

A partir de agora, chamar a função com argumentos posicionais onde é proibido

não funcionará mais.

safe_division_c(1, 10**500, True, False)

>>>

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

Argumentos por palavra-chave, aos quais é passado um valor diferente do

definido como valor-padrão, funcionam sem problemas.

safe_division_c(1, 0, ignore_zero_division=True) # Tudo bem aqui

try:

safe_division_c(1, 0)

except ZeroDivisionError:

pass # Como já era esperado

Argumentos por palavra-chave exclusivos em Python 2

Infelizmente, o Python 2 não possui uma sintaxe explícita para especificar

argumentos exclusivamente por palavra-chave como no Python 3. Podemos

conseguir o mesmo comportamento, a saber, levantar uma exceção TypeErrors

para uma chamada inválida à função, usando o operador ** nas listas de

argumentos. O operador ** é semelhante ao operador * (consulte o Item 18:

“Reduza a poluição visual com argumentos opcionais”), mas em vez de aceitar

um número variável de argumentos posicionais, aceitaremos um número variável

de argumentos por palavra-chave, mesmo que eles não estejam definidos.

# Python 2

def print_args(*args, **kwargs):

print 'Positional:', args

print 'Keyword: ', kwargs

print_args(1, 2, foo='bar', stuff='meep')

>>>

Positional: (1, 2)

Keyword: {'foo': 'bar', 'stuff': 'meep'}

Para fazer com que safe_division receba argumentos exclusivamente por

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!