web-dev-qa-db-fra.com

Opérateur conditionnel en Python?

savez-vous si Python prend en charge certains mots clés ou expressions comme en C++ pour renvoyer des valeurs basées sur la condition if, le tout sur la même ligne (Le C++ if exprimé avec le point d'interrogation ?)

// C++
value = ( a > 10 ? b : c )
79

A partir de Python 2.5 et plus, vous pouvez faire:

value = b if a > 10 else c

Auparavant, vous deviez faire quelque chose comme ceci, bien que la sémantique ne soit pas identique car l'effet de court-circuit est perdu:

value = [c, b][a > 10]

Il y a aussi un autre hack utilisant 'et ... ou' mais il est préférable de ne pas l'utiliser car il a un comportement indésirable dans certaines situations qui peuvent conduire à un bug difficile à trouver. Je n'écrirai même pas le hack ici car je pense qu'il vaut mieux ne pas l'utiliser, mais vous pouvez le lire sur Wikipedia si vous voulez.

127
Mark Byers

simple est le meilleur et fonctionne dans toutes les versions.

   if a>10: 
       value="b"
   else: 
       value="c"
3
ghostdog74