15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

>>>

Red: ['5']

Green: ['']

Opacity: None

Seria ótimo se um valor default 0 fosse atribuído quando um parâmetro não for

atribuído ou for suprimido. Alguns programadores usariam expressões booleanas

porque a simplicidade da lógica requerida não parece ainda necessitar de todo

um comando if ou função auxiliar.

A sintaxe do Python torna essa escolha fácil demais. O truque aqui é que strings

vazias, listas vazias ou zeros são considerados implicitamente como False em

termos booleanos. Portanto, as expressões a seguir vão utilizar a subexpressão

após o operador or caso a primeira subexpressão seja False.

# Para a query string 'red=5&blue=0&green='

red = my_values.get('red', [''])[0] or 0

green = my_values.get('green', [''])[0] or 0

opacity = my_values.get('opacity', [''])[0] or 0

print('Red: %r' % red)

print('Green: %r' % green)

print('Opacity: %r' % opacity)

>>>

Red: '5'

Green: 0

Opacity: 0

O caso red funciona porque a chave está presente no dicionário my_values. O

valor é uma lista com um único número: a string '5'. Essa string implicitamente

devolve True, portanto o valor red é atribuído à primeira parte da expressão or.

O caso green funciona porque o valor no dicionário my_values é uma lista com

um único membro: uma string vazia. Como sabemos, uma string vazia

implicitamente devolve o valor booleano False, fazendo com que a expressão or

atribua o valor 0.

O caso opacity funciona porque não existe um valor no dicionário my_values. O

comportamento do método get faz com que devolva seu segundo argumento se a

chave não existir no dicionário. O valor default neste caso é uma lista com um

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!