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

Diferenças para "SimulandoOperadorTernario"

Diferenças entre as versões de 1 e 9 (8 versões de distância)
Revisão 1e 2005-12-19 22:44:50
Tamanho: 785
Comentário:
Revisão 9e 2009-01-19 22:39:33
Tamanho: 2056
Editor: JSBueno
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
#pragma section-numbers off
Linha 3: Linha 2:

'''''nb. A partir do python 2.5 esta receit aestá obsoleta, uma vez que o operador ternário "if" foi incluído oficialmente na linguagem. O texto aqui permance válido por ajudar a entender como a linguagem funciona '''''
Linha 27: Linha 28:
===== 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:

{{{
#!python

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

}}}

==== Truque "and or" ====

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. O operador '''and''' funciona da seguinte forma:

TRUE and QUALQUER_COISA, retorna QUALQUER_COISA
FALSE and QUALQUER_COISA, retorna FALSE

Enquanto o operador '''or''' funciona assim:

TRUE or QUALQUER_COISA, retorna TRUE
FALSE or QUALQUER_COISA, retorna QUALQUER_COISA

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

}}}

'''Atualização: '''A partir do python 2.5, usar a sintaxe oficial do ''if..else'' inline :

{{{
valor = "cinco" if variavel == 5 else "nemfaço idéia"
}}}

Receita: Simulando o Operador Ternário

nb. A partir do python 2.5 esta receit aestá obsoleta, uma vez que o operador ternário "if" foi incluído oficialmente na linguagem. O texto aqui permance válido por ajudar a entender como a linguagem funciona

À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 "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"

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. O operador and funciona da seguinte forma:

TRUE and QUALQUER_COISA, retorna QUALQUER_COISA FALSE and QUALQUER_COISA, retorna FALSE

Enquanto o operador or funciona assim:

TRUE or QUALQUER_COISA, retorna TRUE FALSE or QUALQUER_COISA, retorna QUALQUER_COISA

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

Atualização: A partir do python 2.5, usar a sintaxe oficial do if..else inline :

valor = "cinco" if variavel == 5 else "nemfaço idéia"

Volta para CookBook.


LeandroPereira