995
Comentário: conditional expressions
|
1802
|
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:
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.