Новый способ присваивания выражения (
:=), или оператор «морж», был самой обсуждаемой функцией, представленной в последней версии Python. Новое дополнение к языку было предложено в PEP 572. Сразу посмотрим, как это выглядит в коде:(x:= 5)print(x) # 5Присваивания с помощью моржа требуется делать в круглых скобках, и перед знаком равно пишется двоеточие. Внутри скобок либо создается новая переменная, либо происходит присвоение значения уже существующий переменной.
Но фишка заключается в том, что вся эта конструкция, скажем так, возвращает присвоенное значение, как это делают обычные функции.
a = (b:= 7)print(a, b) # 7 7Пойдем дальше и рассмотрим пример, в котором раскрывается весь потенциал моржового оператора:
# пусть a – контейнер или последовательностьif (n:= len(a)) > 10: print(f'Слишком много элементов, а именно {n}')То есть мы только что прямо в проверке условия объявили новую переменную n и далее использовали ее вместо того, чтобы вычислять значение заново. Для сравнения посмотрим, как мы это могли сделать раньше:
n = len(a)if n > 10: print(f'Слишком много элементов, а именно {n}')# или if len(a) > 10: print(f'Слишком много элементов, а именно {len(a)}')В первом случае появляется лишняя строка кода, в которой объявляется ненужная переменная. Во втором случае дважды вызвана одна и та же функция, а это потеря в производительности.
Если вам понравился моржовый оператор, то дайте мне фидбек – я сделаю отдельный пост с конкретными примерами.