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