associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "SimulandoOperadorTernario"

Diferenças entre as versões de 3 e 6 (3 versões de distância)
Revisão 3e 2007-01-05 19:03:18
Tamanho: 995
Comentário: conditional expressions
Revisão 6e 2008-08-29 05:59:58
Tamanho: 1802
Editor: CairoRocha
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 28: Linha 28:
Em Python 2.5, foi adicionado a "conditional expression", ou "expressão condicional", que tem a mesma função. Exemplo: Em Python 2.5, foi adicionada a [http://www.python.org/dev/peps/pep-0308/ "conditional expression"], ou "expressão condicional", que tem a mesma função. Exemplo:
Linha 37: Linha 37:
==== Truque "and or" ====
Linha 38: Linha 39:
''Por Cairo Rocha''

Outra maneira de simular um operador ternário em Python é usando '''and or'''. Vejamos como funciona o exemplo abaixo.

Uma string(ou inteiro ou lista ou tupla ou etc...) é sempre ''True'' se o valor dela for diferente de vazio, então:


Se variavel for verdadeira:

(True and "cinco"(True)) or "nem faço ideia"(True) -> and retorna a segunda("cinco")

"cinco"(True) or "nem faço ideia" -> or retorna a primeira("cinco")


Se variavel for falsa:

(False and "cinco"(True)) or "nem faço ideia"(True) -> and retorna a primeira(False)

False or "nem faço ideia" -> or retorna a segunda("nem faço idéia")

{{{
#!python
valor = (variavel == 5) and "cinco" or "nem faço idéia"

}}}

Receita: Simulando o Operador Ternário

Às vezes pode ser desejável fazer testes simples, seguidos de uma atribuição. Existem várias maneiras de se fazer isso, como por exemplo:

   1 if variavel == 5:
   2   valor = "cinco"
   3 else:
   4   valor = "nem faço idéia..."

Uma maneira mais curta seria:

   1 valor = ("nem faço idéia", "cinco")[variavel == 5]

Como esse tipo de teste vai ser sempre false ou true (0 ou 1), valor irá assumir o valor do primeiro elemento da tupla se a condição for falsa, e o segundo valor, se a condição for verdadeira. Ou seja: o primeiro elemento dessa tupla deve ser o resultado para a condição falsa.

Observação

Em Python 2.5, foi adicionada a [http://www.python.org/dev/peps/pep-0308/ "conditional expression"], ou "expressão condicional", que tem a mesma função. Exemplo:

   1 valor = "cinco" if variavel == 5 else "nem faço idéia"

Truque "and or"

Por Cairo Rocha

Outra maneira de simular um operador ternário em Python é usando and or. Vejamos como funciona o exemplo abaixo.

Uma string(ou inteiro ou lista ou tupla ou etc...) é sempre True se o valor dela for diferente de vazio, então:

Se variavel for verdadeira:

(True and "cinco"(True)) or "nem faço ideia"(True) -> and retorna a segunda("cinco")

"cinco"(True) or "nem faço ideia" -> or retorna a primeira("cinco")

Se variavel for falsa:

(False and "cinco"(True)) or "nem faço ideia"(True) -> and retorna a primeira(False)

False or "nem faço ideia" -> or retorna a segunda("nem faço idéia")

   1 valor = (variavel == 5) and "cinco" or "nem faço idéia"

Volta para CookBook.


LeandroPereira