Троичный оператор Python назначение одной переменной python 3.8

#python #conditional-statements #python-3.8 #conditional-operator

#питон #условные операторы #python-3.8 #условный оператор

Вопрос:

Я столкнулся со странной ситуацией в Python и хотел бы получить совет. По некоторым деловым причинам нам необходимо, чтобы в этом модуле кода python было наименьшее количество строк. Долгая история — но это приводит к требованию, чтобы этот кодовый модуль был распечатан и заархивирован на бумаге. Не я устанавливал правила — просто нужно платить по ипотеке.

Мы считываем много данных из веб-службы мэйнфрейма и применяем к этим данным некоторые бизнес-правила. Например, бизнес-правило «простого английского языка» было бы следующим

Если значение состояния нерезидента для поля XXXXXX является пустым или короче двух символов [рассматривать как одинаковое], значение для XXXXXX должно быть установлено в «NR». Оценка должна учитывать стоимость как нерезидентную, если только резидентство не было заявлено явно.

Я хотел бы использовать троичные операторы для некоторых из этих правил, поскольку они помогут сократить количество строк кода. Я не использовал троичные в python3 для этого типа работы, и я что-то упускаю или неправильно форматирую строку

  mtvartaxresXXX = "NR" if len(mtvartaxresXXX)< 2
 

не работает.

Этот блок (классический python) действительно работает

if len(mtvartaxresXXX) < 2:
mtvartaxresXXX = "NR"

Каков наиболее «питонистский» способ выполнить эту оценку в однострочном операторе if.

Спасибо

Комментарии:

1.Добавить часть else также означает, каким должно быть значение mtvartaxresXXX if len(mtvartaxresXXX) >= 2 ?

2. Понимая это буквально, я думаю, что лучшее, что вы получите, это "NR" if len(mtvartaxresXXX) < 2 else mtvartaxresXXX . Я бы просто использовал полный if оператор.

Ответ №1:

Вы можете просто написать if оператор в одной строке:

 if len(mtvartaxresXXX) < 2: mtvartaxresXXX = "NR" 
 

Это такое же количество строк, как и троичное, и не требует явного else значения, поэтому в нем меньше символов.

Комментарии:

1. Стоит отметить, что его легче читать, если вы разделите его на две строки, как обычно.

2. Он явно не заботится о удобочитаемости, ему нужно экономить строки.