Skip to content

If inline — линейное условие ​

Линейная запись условных операторов (inline if) в Python позволяет компактно записывать условные выражения в одну строку. Это делает код более кратким, когда нужно выполнить простые операции в зависимости от условия.

Линейное условие — это способ записи if-else или if в одну строку. Оно часто используется для присваивания переменных, вызова функций или выполнения простых выражений.

Важно понимать, что линейное условие не применимо для конструкций if-elif-else.

Синтаксис:

shell
<значение_если_истина> if <условие> else <значение_если_ложно>

Особенности:

  1. Простота выражения — условие должно быть коротким и легко читаемым.
  2. Ясность кода — для сложных условий лучше использовать стандартный if-else блок.
  3. Ограниченность действий — в одной строке не рекомендуется выполнять несколько сложных операций.

Полное ветвление ​

Преобразование полного ветвления в линейное представление возможно при следующих условиях:

  1. Условная конструкция состоит из только 4-х строк
  2. Однотипность выполняемых операций в теле условия для истинного и ложного условий.

if-else inline для функций ​

Линейное условие может вызывать разные функции в зависимости от истинности или ложности условия:

py
# if classic
number = 5
if number >= 0:
    print("positive")
else:
    print("negative")


# if inline
number = 5
print("positive") if number >= 0 else print("negative")

Нужно обратить внимание, что при преобразовании обычного условия в линейное изменяется только условная конструкция, остальной код не изменяется.

if-else inline для переменных ​

Линейное условие удобно использовать для присваивания переменных.

py
# if classic
number = 10
if number > 5:
    number = 8
else:
    number = -8
print(number)


# if inline
number = 10
number = 8 if number > 5 else -8
print(number)

Аналогично: при преобразовании обычного условия в линейное изменяется только условная конструкция, остальной код не изменяется.

Неполное ветвление ​

if inline для функций ​

Когда требуется выполнить действие только в случае истинности условия, без else блока. Сложность может состоять в том, что линейный if требует синтаксически дописывать else, поэтому лучше всего достроить неполное ветвление до полного ветвления, а после этого будет понятно как решение преобразовать.

py
# if classic
number = -5
if number >= 0:
    print("positive")
# else:
#     print(end="")


# if inline
number = -5
print("positive") if number >= 0 else print(end="")

Для неполного ветвления дописана закомментированная конструкция else, которая визуально показывает, в какой преобразуется неполное ветвление.

Но вызов пустой функции, чаще неудачное преобразование, т.к. функция, может вносить изменения в код, поэтому следует быть внимательным.

Рассмотрим это же пример достроим конструкцию else используя pass - в переводе значения пропустить. Но pass приводит к ошибке в линейной записи, поэтому команду заменяют на None - которая буквально переводиться как ничего и в результате код ничего не делает.

python
# if classic
number = -5
if number >= 0:
    print("positive")
# else:
#     pass


# if inline
number = -5
# print("positive") if number >= 0 else pass  # error
print("positive") if number >= 0 else None

Стоит быть внимательным при использовании линейных условий.

if inline для переменных ​

Линейное ветвление также можно использовать для изменения переменной только при истинности условия. Для преобразования неполного ветвления, так же лучше дополнить до полного ветвления. Рассмотрим типовые ошибки которые можно встретить:

py
# if classic
number = -10
if number > 5:
    number = 8
# else:
#     pass
print(number)


# if inline
number = -10
number = 8 if number > 5 else None
print(number)

Классическое условие будет работать верно, но преобразованное в линейное оно содержит ошибку. Чтобы ошибку видеть достаточно изменить значение переменной так, чтобы сработало условие else. Тогда в результате ответ будет None.

Правильное решение звучит так: "Ели переменная больше 5 то она равна 8 иначе она остается неизменной", в коде получится следующее:

py
# if classic
number = -10
if number > 5:
    number = 8
# else:
#     number = number
print(number)


# if inline
number = -10
number = 8 if number > 5 else number
print(number)

В этом коде принты будут выводить правильные значения для обоих решений.

if с сокращёнными операторами (+=, -=, *=) ​

Линейное условие можно использовать с сокращенными операторами +=, -=, *= и другими для изменения значения переменной. Логика та же достаиваем до полного ветвления учитывая, что знак для в условиях True и False должен быть един

Пример: ​

py
# if classic
number = -9
if number < 0:
    number *= -1
# else:
#     number = number  # error
#     number *= 1
print(number)


# if inline
number = -9
# number *= -1 if number < 0 else number        # error
# number = number * -1 if number < 0 else number * number   # error
number *= -1 if number < 0 else 1
print(number)

Линейная запись условных операторов (inline if) делает код более лаконичным и удобным для простых операций. Однако важно помнить, что чрезмерное использование сложных выражений в одной строке может снизить читаемость кода. Поэтому рекомендуется использовать этот подход для коротких и простых условий.

Упражнения ​

  1. Проверка строки на пустоту. Получите строку text. Если строка пустая, присвойте ей значение "Empty string". Далее проверьте значение переменной с помощью функции print().
  2. Определение максимума из двух чисел. Сравните два числа a и b. Определите и присвойте переменной maximum большее из них. Далее проверьте значение переменной с помощью функции print().
  3. Преобразование строки в верхний регистр. Если длина строки text меньше 8, преобразуйте её в верхний регистр. Далее проверьте значение переменной с помощью функции print().
  4. Проверка делимости на 7. Если число n делится на 7, увеличьте его на 10. В противном случае — оставьте без изменений. Далее проверьте значение переменной с помощью функции print().
  5. Определение чётности числа. Определите, чётное ли число x. Присвойте переменной result значение "even" или "odd". Далее проверьте значение переменной с помощью функции print().
  6. Применение скидки к товару. Если стоимость товара price выше 500, примените скидку в размере 20%. В противном случае — скидка 5%. Далее проверьте значение переменной с помощью функции print().