Знаете ли вы, поддерживает ли 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 является лучшим и работает в каждой версии.