Условный оператор в Python?

Знаете ли вы, поддерживает ли Python какое-либо ключевое слово или выражение, как в С++, для возврата значений на основе условия if, все в одной строке (С++ if, выраженный с вопросительным знаком ?)

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

Ответ 1

Начиная с Python 2.5, вы можете:

value = b if a > 10 else c

Раньше вам приходилось делать что-то вроде следующего, хотя семантика не идентична, поскольку теряется эффект короткого замыкания:

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

Там также есть другой взлом, использующий "и... или", но лучше не использовать его, поскольку он имеет нежелательное поведение в некоторых ситуациях, что может привести к затруднительному обнаружению ошибки. Я даже не буду писать хак, потому что считаю, что лучше не использовать его, но вы можете прочитать об этом на Wikipedia, если вы хотите.

Ответ 2

simple является лучшим и работает в каждой версии.

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