Hoje aprendi mais uma forma [tosca] de fazer condicional com Python.
Depois do truque lógico do “condicao and valor_caso_verdadeiro or valor_caso_falso”, o que descobri navegando na Internet hoje foi:
>>> x = 5
>>> ["menor que 10", "maior que 10"][x > 10]
‘menor que 10′
Isso funciona porque o tipo bool (valor booleano) é um subclasse do tipo int, tipo requerido em indices de sequências.
>>> ["menor que 10", "maior que 10"]['not an integer']
TypeError: list indices must be integers
>>> issubclass(bool, int)
True
>>> ["menor que 10", "maior que 10"][True]
‘maior que 10′
Mas é claro que isso é só um “acidente” e não deve ser usado normalmente. A partir do Python 2.5 temos a sintaxe:
valor_caso_verdadeiro if condicao else valor_caso_falso