#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. Он явно не заботится о удобочитаемости, ему нужно экономить строки.