Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Моржовый оператор в Python: руководство

3465
4 минуты чтения
Средний рейтинг статьи: 5

Первый вопрос, который задают новички, только что узнавшие про моржовый оператор Python — откуда такое странное название? Ответ кроется в самих символах. Посмотрите, как выглядит Python walrus operator:

    

Чем не отдыхающий на берегу моря морж? Символы, добавляющие «глаза» и «бивни», создают характерный образ, поэтому программисты прочно закрепили за этим выражением соответствующее название.

А теперь о том, что оно делает.

Как работает оператор моржа Python

Новый оператор присваивания, появившийся в Python version 3.8, совмещает функцию присвоения значения переменной с возвратом этого значения. Чтобы было понятнее, для начала введем следующее:

    

На выходе мы получили ожидаемое сообщение об ошибке от интерпретатора, поскольку переменная apples не была объявлена. А теперь давайте задействуем «моржа»:

    

7

В одном выражении мы ввели новую переменную и тут же вернули присвоенное значение, удобно! Это та функция, которую долго ждали многие разработчики Python.

Примеры использования

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

    

Можете скопировать код выше в IDLE и посмотреть, как он будет работать. Однако, если мы будем использовать моржовый оператор, то существенно сократим код, в данном случае с пяти строчек до трех:

    

«Морж» позволил нам поместить переменную с командой на присвоение этой переменной значения из пользовательского ввода прямо внутрь цикла while, что сэкономило пару строк кода. И работать это будет точно так же:

    

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

Применение walrus Python с условными конструкциями

Напишем фразу и присвоим ей значение переменной, а затем найдем какое-нибудь слово в этой фразе по условию:

    

Запись [word:] позволяет нам получить такой вывод:

    

А теперь давайте сократим код с использованием моржового оператора. И вместо:

    

напишем так:

    

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

Walrus Python с числовыми выражениями

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

    

И теперь введем в интерпретаторе следующее:

    

Получим такой вывод:

    

Перепишем ввод в интерпретаторе с помощью моржового оператора:

    
    

Как видим, код сократился не слишком сильно, зато количество вызовов функции уменьшилось почти вдвое, а значит, программа будет работать быстрее!

3465
4 минуты чтения
Средний рейтинг статьи: 5
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server