0

Польза оператора Walrus в Python

Друзья, давайте рассмотрим интересный оператор в Python - walrus, или моржовый.

Он появился в питоне, начиная с версии 3.8 и представляет собой двоеточие со знаком равно

:=

Чем он может быть полезен разработчику?

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

Вот самый простой пример - в первом принте мы использовали оператор walrus, но при этом не только присвоили значение переменной variable, но и смогли вернуть значение на вход функции print - поэтому она смогла распечатать значение.

С обычным присваиванием через равно =, такой трюк работать не будет:

И нам пришлось бы писать что то вроде:

То есть больше строк кода, чтобы добиться того же результата.

Согласен, пример довольно искусственный, но помимо компактности, walrus оператор может нам помочь также уменьшить количество вызовов функций и процессорного времени.

Давайте посмотрим  на пример со списковым включением - из исходного списка lst сделаем список кубов, причем только тех кубов, которые меньше 150.

В первом случае мы дважды вызвали n**3 для каждого элемента, а во втором только один - так как сразу присвоили значение переменной cube. Поэтому во втором случае будет тратиться в 2 раза меньше процессорного времени.

Walrus мы можем использовать также внутри условия, ведь оператор опять же вернет значение, которое можно с чем-либо сравнить. Единственное, нужно заключить в скобки присваивание с помощью walrus:

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

Спасибо за прочтение, друзья

Пишите в комментах, что думаете по поводу walrus оператора и полезен ли он Вам, а вот здесь я публикую еще и разборы решений задачек с собеседований.