Подтвердить что ты не робот

Питон? (условный/тернарный) оператор для присвоений

C и многие другие языки имеют условный (ака тернарный) оператор. Это позволяет сделать очень тонкий выбор между двумя значениями, основанными на истине условия, что делает выражения, в том числе назначения, очень краткими.

Я пропустил это, потому что обнаружил, что мой код имеет множество условных назначений, которые берут четыре строки в Python:

if condition:
    var = something
else:
    var = something_else

В то время как в C это будет:

var = condition? something: something_else;

Один или два раза в файле в порядке, но если у вас много условных назначений, число строк взрывается и, что хуже всего, глаз обращается к ним.

Мне нравится привязка условного оператора, потому что он держит вещи, которые я считаю нестратегическими, отвлекающих меня, когда снимаю код.

Итак, на Python есть ли какие-либо трюки, которые вы можете использовать, чтобы получить назначение на одну строку, чтобы аппроксимировать преимущества условного оператора, как я их изложил?

4b9b3361

Ответ 1

Python имеет такой оператор:

variable = something if condition else something_else

В качестве альтернативы, хотя и не рекомендуется (см. комментарий @karadoc):

variable = (condition and something) or something_else

Ответ 2

В более старом коде Python вы можете увидеть трюк:

condition and something or something_else

однако это было заменено значительно превосходящей конструкцией ... if ... else ...:

something if condition else something_else