Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2007 12:58:13

multik
От:
Зарегистрирован: 2007-10-16
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор ?:

эмуляция тринарного оператора обычно записывается так:

a = x is None and 1 or 2



Отредактировано (Дек. 11, 2007 12:59:01)

Офлайн

#2 Дек. 11, 2007 14:39:57

setoy
От:
Зарегистрирован: 2006-07-20
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор ?:

Ну, почему так ненавидите простое, деревенское

if condition:

else:


:rolleyes:

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



Офлайн

#3 Дек. 11, 2007 22:34:04

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор ?:

setoy
Ну, почему так ненавидите простое, деревенское

if condition:

else:


:rolleyes:

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

зачем лишний код городить, когда в одной строке можно



Отредактировано (Дек. 11, 2007 22:34:26)

Офлайн

#4 Дек. 12, 2007 03:21:17

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

оператор ?:

BION, пример плохой. Ошибки надо исключениями обрабатывать.



Офлайн

#5 Дек. 12, 2007 11:41:03

multik
От:
Зарегистрирован: 2007-10-16
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор ?:

lorien
А то что вы показали, проверяет x на эквивалентность None
я в курсе, что такое оператор is. “x is None” здесь – это пример логического высказывания. 1 – это значение возвращаемое конструкцией в случае истинности высказывание. 2, соответственно, – в случае ложности.



Офлайн

#6 Дек. 12, 2007 15:09:28

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор ?:

j2a
BION, пример плохой. Ошибки надо исключениями обрабатывать.
Мая Вас не панимать, какие ошибки?
В чем отличия этого:
Error=1
print "Windows must %s!"%(IIF(Error, "die", "live"))
от этого:
error = 1
print 'Windows must %!' % (error and 'die' or 'live')
Проверяется условие и всего то. Если возникнут проблемы со значением переменной, то они возникнут и во втором варианте.
Ах да lorien заметил, что первый уродливее )) ну это эстетика.



Отредактировано (Ноя. 12, 2008 15:48:20)

Офлайн

#7 Дек. 12, 2007 18:11:12

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

оператор ?:

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

P.S. Смысл в том, что пример использования тернарного оператора или его эмуляции явно неудачный.



Отредактировано (Дек. 12, 2007 18:12:24)

Офлайн

#8 Дек. 12, 2007 20:10:07

BION
От:
Зарегистрирован: 2007-08-26
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

оператор ?:

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

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

p.s. Мда не ожидал я, что эта тема будет такой обсуждаемой ))



Отредактировано (Дек. 12, 2007 20:13:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version