Найти - Пользователи
Полная версия: оператор ?:
Начало » Python для экспертов » оператор ?:
1 2
multik
эмуляция тринарного оператора обычно записывается так:
a = x is None and 1 or 2
setoy
Ну, почему так ненавидите простое, деревенское

if condition:

else:


:rolleyes:

Так все намного понятнее выглядит. Оператор ? я не полую и в С.
BION
setoy
Ну, почему так ненавидите простое, деревенское

if condition:

else:


:rolleyes:

Так все намного понятнее выглядит. Оператор ? я не полую и в С.
А если мне вот так надо:
Error=1
print "Windows must %s!"%(IIF(Error, "die", "live"))

зачем лишний код городить, когда в одной строке можно
j2a
BION, пример плохой. Ошибки надо исключениями обрабатывать.
multik
lorien
А то что вы показали, проверяет x на эквивалентность None
я в курсе, что такое оператор is. “x is None” здесь – это пример логического высказывания. 1 – это значение возвращаемое конструкцией в случае истинности высказывание. 2, соответственно, – в случае ложности.
BION
j2a
BION, пример плохой. Ошибки надо исключениями обрабатывать.
Мая Вас не панимать, какие ошибки?
В чем отличия этого:
Error=1
print "Windows must %s!"%(IIF(Error, "die", "live"))
от этого:
error = 1
print 'Windows must %!' % (error and 'die' or 'live')
Проверяется условие и всего то. Если возникнут проблемы со значением переменной, то они возникнут и во втором варианте.
Ах да lorien заметил, что первый уродливее )) ну это эстетика.
j2a
BION
j2a
BION, пример плохой. Ошибки надо исключениями обрабатывать.
Мая Вас не панимать, какие ошибки?
Error=1
print "Windows must %s!"%(IIF(Error, "die", "live"))
Я про контекст. Дескать, в error лежит код ошибки, и в зависимости от этого, показывать die или live. Я к тому, что если это ошибка то ее нужно обрабатывать исключением. Если это состояние, то нужно иметь словарь {код_состояния: описание_состояния} и не изгаляться с ‘… and … or’ или придумывать велосипеды в виде IIF. Если это вывод отладочной информации, то лучше вывести код “как есть”, а не интерпретировать его словами.

P.S. Смысл в том, что пример использования тернарного оператора или его эмуляции явно неудачный.
BION
j2a
Я про контекст. Дескать, в error лежит код ошибки, и в зависимости от этого, показывать die или live. Я к тому, что если это ошибка то ее нужно обрабатывать исключением. Если это состояние, то нужно иметь словарь {код_состояния: описание_состояния} и не изгаляться с ‘… and … or’ или придумывать велосипеды в виде IIF. Если это вывод отладочной информации, то лучше вывести код “как есть”, а не интерпретировать его словами.

P.S. Смысл в том, что пример использования тернарного оператора или его эмуляции явно неудачный.
Да господь с Вами, я совсем не имел ввиду обработку ошибок, это просто переменная для примера проверки условия.
Можно конечно и ‘… and … or’ использовать, но по опыту в VB мне приятнее вариант с iif(…), хотя жаль что нет ‘… ? … : …’ - красиво однако. В общем тут дело вкуса.

p.s. Мда не ожидал я, что эта тема будет такой обсуждаемой ))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB