Comments 14
По моему в Python чаще используется
print True and 1 > 2 or False
читаемость меньше такого варианта имхо
python вообще богат на такие выкрутасы
python вообще богат на такие выкрутасы
a = True
print ['False','True'][a] # True
Хосподи, минут 5 втыкал, пока понял :)
Для тех кто устал после тяжелого дня:
['False', 'True'][True] == ['False', 'True'][1] == 'True' # :)
Если уж быть совсем честным, то булевы объекты реализуют вот этот метод docs.python.org/release/3.1/reference/datamodel.html#object.__index__
>>> False.__index__()
0
>>> True.__index__()
1
>>> a = 2
>>> a.__index__()
2
Увы, этот код не идентичен тернарному оператору из C. По той простой причине, что в Вашем случае ОБА выражения из списка будут вычислены, а в случае C — только нужное.
print 1 > 2
, не?Бля, как ненавижу когда так пишут, кто бы знал. Когда на код-ревью приходит патч с такими штуками сразу намертво залипаю.
читать невозможно
А где история-то?
Версия про Машину Поста интересна. Однако, в действительности тернарный оператор не был придуман в C, а пришел в него уже готовым из CPL, чуть поменяв синтаксис. Там это писалось так:
На синтаксис Машины Поста не похоже совершенно.
Основы синтаксиса CPL можно посмотреть в статье "The main features of CPL". Ответ на вопрос «давайте разберемся почему он именно такой, а не другой» нужно искать именно в этой статье. :)
Так что красивое, но совпадение.
BooleanExpr -> TrueExpr, FalseExpr
На синтаксис Машины Поста не похоже совершенно.
Основы синтаксиса CPL можно посмотреть в статье "The main features of CPL". Ответ на вопрос «давайте разберемся почему он именно такой, а не другой» нужно искать именно в этой статье. :)
Так что красивое, но совпадение.
Sign up to leave a comment.
История тернарного оператора