Найти в Дзене
Секреты python

Морж := в python. Зачем?

Оглавление

Оператор "морж" := (walrus) в python появился в версии 3.8 и представляет собой синтаксический сахар для присвоения значений непосредственно в коде их обработки.

Почему морж?

Символ (:=) похож на глаза и бивни моржа, который лежит на боку.

Формат использования

имя_идентификатор := выражение

Зачем?

Рассмотрим пример 1.

Результат: 8 8
Результат: 8 8

При создании словаря с записями объявляются переменные num_length и num_sum, которые остаются в памяти и могут использоваться в коде отдельно от словаря. В словаре также сохраняется их значение без изменения.

Результат: 8 1
Результат: 8 1

Т. е. значение num_length изменилось с 8 на 1, а значение в словаре по ключу 'длина' осталось прежним - 8.

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

Рассмотрим пример 2.

Результат: Total: 27 [1, 4, 9, 16, 25, 27]
Результат: Total: 27 [1, 4, 9, 16, 25, 27]

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

total = 27, промежуточные суммы ряда - [1, 4, 9, 16, 25, 27]

Треш в коде, или как писать не рекомендуется

1. Определять переменные/объекты через := в обычной ситуации.

y := 3 # invalid syntax
(y := 3) # будет работать, но зачем?
count +:= 1 # invalid syntax
count := count + 1 # будет работать, но зачем?
x = y = z = 0 # треш - аналог: (z := (y := (x := 0)))

2. Определять переменные/объекты при объявлении функции.

def calc(answer = p := 42): # invalid syntax
...
def calc(answer=(p := 42)): # будет работать, но зачем?
...

3. Особенности с if.

number = 3
if cube := number ** 3 > 5:
print(cube)

Результат: True

Как правильно:

number = 3
if (cube := number ** 3) > 5:
print(cube)

Результат: 27

Пожалуйста, поддержите канал подпиской или лайком.

Это будет стимулом для нас работать лучше.

#технологии #программированиенаpython

#питон #операторы #python3

#программированиедляначинающих #секреты