Самый СТРАННЫЙ оператор в Python (основные фишки и ошибки с walrus operator)

preview_player
Показать описание

В данном видео мы рассмотрим очень странный оператор Python, который добавили в релизе Python3.8. Многие вообще не знают о его существование, но он призван упростить нам написание кода и избавить от ошибок.

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

Тайм-коды:
0:00 - Новый странный оператор
0:55 - Как работает оператор моржа?
1:26 - Странные записи walrus оператора
2:00 - Зачем добавили этот оператор? Почему не расширили оператор присваивания?
4:06 - Оператор моржа это синтаксический сахар?
4:46 - Пример использования в условиях
6:15 - Использование в циклах для ввода данных
7:16 - Настоящее предназначение walrus оператора в python
9:28 - Интересный пример использования
10:04 - Разбираем популярные ошибки с оператором моржа
11:40 - Где глубже изучить этот оператор?
Рекомендации по теме
Комментарии
Автор

Если кто знает интересные фишки с этим оператором,
не забудьте поделиться в комментариях =)

zproger
Автор

Всё обобщается фразой:
Оператор сохраняет значение в переменную и одновременно его возвращает

justman
Автор

Определение назначения фактически отсутствует, сплошные иллюстрации. Наглядность — это замечательно, но строгость описания не менее важна.
Я лично услышал в данном ролике что-то вроде: «Если мы напишем «print(x:=1)», то значение 1 запишется в x, то есть это — всё равно, что написать «print(1)»...» — как-то невнятно. Должно же, как мне кажется, описание звучать как-то так: «Данный оператор присваивает переменной значение и возвращает его», — и уже дальше можно пускать примеры, так будет и строго, и наглядно.

esft-argentum
Автор

Пример с двухчасовой функцией реально дал понимание нужности этого оператора. Остальные примеры тяжело понять, в особенности со строкой startswith поскольку там генератор в любом случае пройдётся по всему списку

serafimgrubas
Автор

На 7:30 мы имеем дело не с генератором а с (list comprehension - строковые включения)
f_data = [y for x in data if (y := test(x)) != 4]. данная запись при вызове type(f_data) вернет <class 'list'>.
для того что бы создать генератор используется подобная запись, только в круглых скобках:
f_data = (y for x in data if (y := test(x)) != 4) - тот же type(f_data) вернет <class 'generator'>, с которым работают через вызов next(f_data)
Отличие этих двух записей очень большое.
Так что правильнее будет сказать, что данная запись генерирует список, но генератором не является

endzsop
Автор

По поводу примера while (value:= input()) != "" можно же красиво упростить:
while name := input("Name:"):
print(name)

svaaccelerator
Автор

тот случай когда быстрее прочитать чем посмотреть ролик до конца ) но спасибо за наводку )

Max-qjfh
Автор

Очень полезная информация для новичка, все подробно и просто розложено. Спасибо что делаете подобные видео, ждем другие:)

irwe
Автор

Спасибо очень помогаешь с учёбой по языку Python!!!;)

bekzodhalilov
Автор

Очень много повторений, можно было сократить видео раза в 2

QAengineer
Автор

ZProger, пожалуйста, давайте больше конкретики в видео, не обходитесь одними иллюстрациями. Без четкого и ясного определения функции намного сложнее понимать ее применение. Пожалуйста, уделите больше внимания разбору примеров

nikitabaraboshin
Автор

Видео полезное, спасибо. Особенно про производительность при двойном вызове функции.

someone
Автор

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

bomboklaa
Автор

АРГХХ, БЛДЖАД! Это можно было сказать тремя фразами: кейс 1 — присваивать значение переменной в условиях (в С-стиле, но без его недостатка), кейс 2 — перестать делать for y in [fn(x)] в comprehension'ах, и кейс 3 — конфликт синтаксиса присвоения внутри аргумента функции и именованных аргументов функций

sailtogether
Автор

Спасибо за ответы на "основные вопросы", которые запутали все окончательно...

_Kruzo_
Автор

03:31 знаем знаем) так меньше шансов ошибится. Вместо равенства можно случайно указать присвоение переменной и тогда это будет совсем другой код. Такая запись лишает нас возможности присвоения. У этой фишки есть название, но я не помню его)

ggecnmi
Автор

Да за шо) Вот смотрю видео и так затягивает, что хочется смотреть ещё и ещё и те видео, которые выходят во всплывающих подсказках) И так уходит незаметно полдня) Автору спасибо за топовые контенты, которые он пилит для нас)

renatshaym
Автор

я правильно понял, что он работает как и обычное =, но вмести с тем возвращает присвоенное значение.

plhusiu
Автор

Если язык С влияет на Питон - возникает обоснованный вопрос о целесообразности существования этого самого Питона. лол.

waltage
Автор

Крутая штука, главное предупреждать команду перед использованием, а когда пишешь сам то просто быть внимательным :)

artembagachkov