Operador condicional em Python? [duplicado]

Esta pergunta já tem uma resposta:

Você sabe se o Python suporta alguma palavra-chave ou expressão como em C++ para devolver valores com base na condição if, todos na mesma linha (O C++ if expresso com o ponto de interrogação ?)

// C++
value = ( a > 10 ? b : c )
Author: Abruzzo Forte e Gentile, 2010-02-03

2 answers

A partir do Python 2.5 pode fazer:

value = b if a > 10 else c

Anteriormente, teria de fazer algo como o seguinte, embora a semântica não seja idêntica à perda do efeito de curto-circuito:

value = [c, b][a > 10]
Também há outro hack a usar e ... .. ou ' mas é melhor não usá-lo como ele tem um comportamento indesejável em algumas situações que podem levar a um bug difícil de encontrar. Eu nem vou escrever o hack aqui como eu acho que é melhor não usá - lo, mas você pode ler sobre ele em Wikipedia Se quiseres.
 112
Author: Mark Byers, 2013-04-10 08:21:18

Simples é o melhor e funciona em todas as versões.

   if a>10: 
       value="b"
   else: 
       value="c"
 1
Author: ghostdog74, 2010-02-03 13:25:27