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

Поделиться
HTML-код
  • Опубликовано: 4 июн 2024
  • ⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
    ⭐ Мой телеграм канал: t.me/+7INN3ABOEnk1ZGIx
    ⭐ Телеграм канал из видео: t.me/+i-oKNJt75rowNWVi
    В данном видео мы рассмотрим очень странный оператор Python, который добавили в релизе Python3.8. Многие вообще не знают о его существование, но он призван упростить нам написание кода и избавить от ошибок.
    Но как бы это странно не звучало, в некоторых моментах он эти ошибки наоборот добавляют, поэтому в этом видео мы рассмотрим как и возможности оператора, так и ошибки, которые часто совершают новички, используя возможности оператора моржа.
    📁 Документация walrus operator: t.me/codeblog8/133
    📁 Github: github.com/Zproger
    📁 Все плейлисты с уроками: bit.ly/39GaY89
    📁 Связаться со мной: zproger777@gmail.com
    📁 Поддержать криптовалютой: github.com/Zproger/donate
    Тайм-коды:
    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 - Где глубже изучить этот оператор?

Комментарии • 279

  • @zproger
    @zproger  Год назад +13

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

    • @grigoriikuchumov2277
      @grigoriikuchumov2277 Год назад +2

      Принципиальная разница между := и = в том, что первый оператор определяет выражение, а второй - инструкцию. Поэтому как и должно при использовании выражений возвращается результат обработки выражения. С инструкциями такое не прокатывает, потому что инструкции не могут никаких результатов возвращать (это не их роль).
      "Проблемка" в Си (и многих наследниках) была в том, что там оператор = являл собой и инструкцию и выражение в зависимости от контекста использования.
      a = 5; - инструкция присваивания.
      if (a = 5) ... ; - выражение (a = 5) в инструкции (условной оператор).
      Да, при неопытности или рассеянности это может приводить к проблемам, при перепутывании операторов = и ==, например, в условном выражении.
      В Python = является только инструкцией и никак иначе (следовательно, возвращать значения не может), поэтому если бы вернули "фишку" классических Си-подобных языков с оператором инструкции и выражения в зависимости от контекста, то это было бы не в духе Python, в котором стараются в максимальную однозначность и т. п.
      В print(a=5) "проблема" в том, что интерпретатор даже не может предположить, что ты с какого-то хрена будешь пихать инструкцию в качестве параметра в функцию. Поэтому, разумеется, ищется подходящий аргумент.
      Ну, а для наглядной разницы что происходит и какие проблемы могут быть при недостаточном опыте или непонимании что-то типа такого:
      Первый фрагмент.
      if a := False and (b := True):
      print('a = ', a)
      print('b = ', b)
      print('a = ', a)
      print('b = ', b)
      Второй фрагмент.
      if a := True and (b := False):
      print('a = ', a)
      print('b = ', b)
      print('a = ', a)
      print('b = ', b)
      Третий фрагмент.
      if a := True and (b := False):
      print('a = ', a)
      print('b = ', b)
      print('a = ', a)
      print('b = ', b)
      Четвёртый фрагмент.
      if a := False or (b := True):
      print('a = ', a)
      print('b = ', b)
      print('a = ', a)
      print('b = ', b)
      Пятый фрагмент.
      if (a := False) or (b := True):
      print('a = ', a)
      print('b = ', b)
      print('a = ', a)
      print('b = ', b)
      Поэтому с данным оператором надо быть внимательным. Особенно стоит обратить внимание на 4-й фрагмент и сравнить с 5-м.

    • @Mr_AnKei
      @Mr_AnKei Год назад

      Классное видео, очень полезное спасибо :)

    • @gitarre_spielen
      @gitarre_spielen 11 месяцев назад

      ну как же, он позволяет оставлять рожицы в комментариях к программе: # :=)

    • @_vpru
      @_vpru 3 месяца назад

      @@grigoriikuchumov2277 по-моему код, в котором есть неоднозначности стоит признать говном. Поэтому даже зная приоритет выполнения инструкций/выражений, всё-равно считается хорошим тоном ставить скобки. В конце концов, синтаксический сахар должен быть сладким, а не превращать одностроку в горький ребус. Поэтому наверное и цикл FOR будет жить вечно в кодерской среде - он прост и понятен как два пальца.

  • @justman7656
    @justman7656 Год назад +51

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

    • @zproger
      @zproger  Год назад +6

      Да, но если я так скажу и сразу закрою видео, никто не поймет ничего)

    • @rad9587
      @rad9587 Год назад +3

      @@zproger что не понятного?

    • @qvar7449
      @qvar7449 Год назад +1

      @@rad9587 думаю многие если услышат такое объяснение просто скажут "зачем? можно же просто просто сначала присвоить переменной, а потом использовать переменную"

    • @rad9587
      @rad9587 Год назад +1

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

    • @arsegorov
      @arsegorov Год назад

      Честно говоря, странно, что обычное присваивание не возвращает присвоенное значение, в отличие от Си, не смотря на то, что Питон на Си и написан. Хотя цепное присваивание `a = b = c` в Питоне есть

  • @esft-argentum
    @esft-argentum Год назад +97

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

    • @xaea-1233
      @xaea-1233 Год назад

      согласен, видно что автор то сам понимает что говорит, а вот мне непонятно, хотя я уже второй год работаю

  • @serafimgrubas2070
    @serafimgrubas2070 Год назад +36

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

    • @kan4317
      @kan4317 Год назад

      Не, any "ломается" на первом True

    • @romansovetskikh7902
      @romansovetskikh7902 Год назад +3

      Проблема высосана из пальца. Элементарно всё решаетcя и без моржа.

    • @user-pz9ju6ss7r
      @user-pz9ju6ss7r Год назад +1

      @@romansovetskikh7902 да, решается, просто моржовый оператор изначально создавался как сахар, а не принципиально новый подход

    • @zproger
      @zproger  Год назад +1

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

    • @romansovetskikh7902
      @romansovetskikh7902 Год назад

      @@user-pz9ju6ss7r ну, такой себе сахар, с огромным содержанием горчицы. Операции присвоения и возврата гораздо интуитивно понятнее. Когда перед тем, как съесть сахар, надо подумать пару дней, явно лучше съесть проверенное несладкое за 5 минут - иначе с голоду помереть можно.

  • @user-en6dz2so7p
    @user-en6dz2so7p Год назад +2

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

  • @svaaccelerator313
    @svaaccelerator313 Год назад +3

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

  • @Max-qj2fh
    @Max-qj2fh Год назад +6

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

    • @zproger
      @zproger  Год назад

      Пожалуйста =)

  • @nikitabaraboshin7123
    @nikitabaraboshin7123 Год назад +4

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

  • @QAengineer
    @QAengineer Год назад +7

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

    • @zproger
      @zproger  Год назад

      Спасибо, учту в следующих видео и постараюсь не повторяться

  • @bekzodhalilov8689
    @bekzodhalilov8689 Год назад +12

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

    • @zproger
      @zproger  Год назад +1

      Это хорошо =)

  • @irwe3514
    @irwe3514 Год назад +4

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

    • @zproger
      @zproger  Год назад

      Благодарю!

  • @sailtogether3236
    @sailtogether3236 Год назад

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

  • @waltage
    @waltage 2 месяца назад

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

  • @archyt88
    @archyt88 Год назад +3

    Оператор для собеседований

    • @zproger
      @zproger  Год назад +3

      Тоже верно)

  • @user-gg9ec2nm6i
    @user-gg9ec2nm6i Год назад +5

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

    • @dotcomming7680
      @dotcomming7680 Год назад +1

      Yoda notation я подозреваю. Но обычно в ООП таким образом ещё и избавляются от nullPointerException

    • @zproger
      @zproger  Год назад +2

      Да, опасная штука :)

    • @sob3856
      @sob3856 Год назад

      Насколько я знаю компилятор gcc с параметром -Werror не даст скомпилировать код если нарисать if x=5, оно покажет ошибку.

  • @someone3835
    @someone3835 Год назад

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

  • @user-pl6hu6si1u
    @user-pl6hu6si1u Год назад +2

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

  • @bomboklaa
    @bomboklaa Год назад +2

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

    • @zproger
      @zproger  Год назад

      Будем исправляться =)

  • @Barmaley_YT
    @Barmaley_YT Год назад +1

    Доброго дня, хорошего настроения.
    Есть интересная особенность, которая к сожалению не касается моржового оператора.
    Хотелось бы получить ответ на следующий вопрос :
    Почему конкатинируются строки в листе?
    Пример следующий:
    temp=['i','love',
    'the '
    'Python','very','match'
    '!!!']
    print(temp)

  • @trixion74
    @trixion74 Год назад +2

    Ожидание: что это за оператор
    Автор: сейчас я расскажу как его можно использовать
    p.s. прошла уже половина видео и я так и не понял

  • @cs_dequeue
    @cs_dequeue Год назад +2

    Спасибо за полезное видео! Но надеюсь люди догадываются, что в 7:28 не генератор, а просто list comprehension. синтаксис генаратора вместо [] использует ().
    Про print(num = 1) было интересно👍

  • @hock_2334
    @hock_2334 Год назад +2

    простите мне мою невежественность , а как вы сделали != "" перечеркнутым? Я только начинаю учится. Это только в пайчарме так можно?

    • @zproger
      @zproger  Год назад +1

      IDE сама так форматирует для красоты =)

  • @MyKashiwa
    @MyKashiwa Год назад +2

    Спасибо! Очень хорошо и доходчиво

    • @zproger
      @zproger  Год назад

      Рад что Вам понравилось

  • @_Kruzo_
    @_Kruzo_ Год назад +1

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

    • @zproger
      @zproger  Год назад

      я старался =)

  • @CrossBend
    @CrossBend Год назад +1

    вот, сначала нарушают основные принципы программирования - плодят сущности, а потом вынуждены плодить их еще больше из-за именованных аргументов ))))) а как удобно в JS паровозиком присваивать: a=b=1;if(x=a==b)alert('x='+x) счастье порой так близко...

  • @vadim5401
    @vadim5401 Год назад +4

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

    • @zproger
      @zproger  Год назад

      Это чисто пример, чтобы понять суть оператора.
      А так да, оператор частично создан чтобы улучшить код и добавить новый функционал.

    • @MaxusR
      @MaxusR Год назад

      В случае while это уже выльется в бесконечный цикл с прерыванием по значению

  • @artembagachkov933
    @artembagachkov933 Год назад +2

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

  • @archyt88
    @archyt88 Год назад +8

    Если есть функция которая выполняется два часа, наверное следует её переписать на С++ или по крайней мере на Cython

    • @zproger
      @zproger  Год назад +1

      Это да, я чисто для простоты понимания сделал такой пример

    • @Vasile4e4ek
      @Vasile4e4ek Год назад +3

      Это полезно для codewars и leetcode, мне этого точно порой не хватало, но с другой стороны, если это необходимо, значит что-то изначально не так

    • @serafimgrubas2070
      @serafimgrubas2070 Год назад

      А если и с++ функция работает два часа, тут уже никуда не убежишь :)

    • @alexbobin3044
      @alexbobin3044 Год назад

      Тем временем функция
      class Supermatem:
      Def reshala(aboba, nanana, sss)
      time. sleep(7200000)
      return "сложна, очень сложна"

    • @pavelmakis
      @pavelmakis Год назад +1

      Вы знаете язык программирования Cpython? Не слышал о таком

  • @user-xf7ue9vj4g
    @user-xf7ue9vj4g Год назад +2

    Спасибо Вам, очень понятно и лаконично👍

    • @zproger
      @zproger  Год назад

      Благодарю! Буду стараться и дальше =)

    • @andreykuznetsov8096
      @andreykuznetsov8096 Год назад

      Зачем ты врёшь? И зачем автор это лайкнул? Я просмотрел уже 8 минут и особенно мой мозг взорвался на примере с if, потому что я не могу понять, зачем это нужно

    • @user-og6es2ht4v
      @user-og6es2ht4v Год назад

      насчёт понятно спорный момент

  • @ZA_CCCP
    @ZA_CCCP Год назад +3

    Оо, спасибо, что увидел мой комментарий :]

    • @zproger
      @zproger  Год назад +1

      Пожалуйста, я все крутые идеи реализовываю =)

  • @renatshaym
    @renatshaym Год назад

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

  • @user-yk2zc8vy6u
    @user-yk2zc8vy6u Год назад +3

    Спасибо за инфу)
    Чисто сахар, чтобы писать в меньшее количество строк)

    • @zproger
      @zproger  Год назад

      Ага) Но сахар достаточно опасный в некоторых случаях =)

  • @sailtogether3236
    @sailtogether3236 Год назад

    Очень много "воды", но многие говорят, что "воды" очень много, совсем много, что просто капец, ведь можно было без "воды", которой очень много, сказать лишь суть, которая без "воды".

  • @eagold
    @eagold Год назад +1

    но кстати этого оператора мне часто не хватало, даже подумать не мог что он есть ещё и с версии 3.8

    • @zproger
      @zproger  Год назад +1

      Пайтон не перестает удивлять :)

  • @auril1594
    @auril1594 Год назад +2

    спасибо, стало понятнее. пример бы наверное сделал через filter. хотя может через моржа и правильнее

    • @zproger
      @zproger  Год назад

      Можно разные примеры делать =)

  • @slavakonstantinov1531
    @slavakonstantinov1531 Год назад +1

    Огромное спасибо. Это было очень интересно и познавательно

    • @zproger
      @zproger  Год назад

      Рад что принес пользу =)

  • @jackmoral9127
    @jackmoral9127 Год назад +1

    Круто! Но больше всего мне стало интересно этот как вместо != зачеркнутое равно поставить, это какуюто комбинацию клавишь надо прожать или только в пайчарме актуально?

    • @alexbobtail4862
      @alexbobtail4862 Год назад

      Тоже интересно. Нашли, как это сделать?

    • @alexbobtail4862
      @alexbobtail4862 Год назад

      Попытался скопировать знак ≠. Не работает

  • @revoluxe
    @revoluxe Год назад +1

    Супер, очень полезная вещь!

    • @zproger
      @zproger  Год назад

      Благодарю

  • @luispakvard5681
    @luispakvard5681 Год назад +1

    А как взять записать ресурсы с одного екзешника другой я знаю что есть секция .rsrc реально ли ее взять с 1го файла и переписать в 2й екзешник что бы у него были там иконка, манифест , версия такие как у 1го файла и что б он работал как раньше?

    • @zproger
      @zproger  Год назад

      Реально, но я не знаю как это сделать в Python, потому что тут всё оборачивается в рантайм, и там сложно найти какие-то ресурсы

    • @Dmytro-Tsymbaliuk
      @Dmytro-Tsymbaliuk Год назад

      Раз речь про .exe, то речь не о питоне, либо про питон, но с нестандартным транслятором, где полученный результат будет работать даже если удалить его из системы
      скопировать в другой то действительно можно, только смысл, если это никакого положительного результата не даст? Это будут тупо неиспользуемые данные

  • @Ramzes200986
    @Ramzes200986 Год назад

    Удобно, вызвал один раз функцию и проверил и присвоил))))

  • @dmitry-lz1ny
    @dmitry-lz1ny Год назад +1

    Сам изучаю питон 3 недели и случайно узнал моржевом операторе.
    Тема крутая, но мне пока очень трудно найти правильное использование.

    • @zproger
      @zproger  Год назад

      Думаю ещё придет время =)

  • @MrMolekula
    @MrMolekula Год назад

    3:35 - так пишут, чтобы по ошибке не написать в условии оператор присваивания. Про крайней мере меня так учили)

  • @scren2010
    @scren2010 Год назад +1

    Отличное видео, спасибо!

  • @trixion74
    @trixion74 Год назад +2

    я сначала подумал это Turbo Pascal

    • @zproger
      @zproger  Год назад

      тьфу тьфу тьфу

  • @handal3403
    @handal3403 Год назад +1

    Скажи пожалуйста как называется твоя тема pycharm?

  • @JarBinks
    @JarBinks Год назад +1

    Спасибо! Видео оказалось очень полезным!

  • @zakirovio
    @zakirovio Год назад

    Сначала перепутал с ключ значением в генераторе словаря {i: = value for i in range(n)}, оказалось немного другое 👍

  • @sambo-mambo
    @sambo-mambo Год назад +1

    Информативно. Круто мне понравилось.

    • @zproger
      @zproger  Год назад

      Благодарю!

  • @robertobokarev439
    @robertobokarev439 Год назад

    Пригодится во всяких генераторах, к примеру каждый вызов увеличивает возвращаемое число на 1

  • @koolmax79
    @koolmax79 Год назад +1

    Те кто на C/C++ пишут не путают = и ==.
    И я бы никогда так как предлагается не писал, некрасиво, лучше сущность сравнивать с чем то, а не наоборот.
    Простой пример
    if(men.age == 5) //если человеку 5 лет
    if(5 == men.age) //если 5 человеку лет. Вы серьезно так думаете и говорите?
    То что касается питона, хорошие примеры, подробно и понятно

  • @donfedor007
    @donfedor007 Год назад

    Добрый день! Почему у Вас не равно записано не != , а перечёркнутое равно? И как так делать?

  • @bmx666bmx666
    @bmx666bmx666 Год назад

    полезная вещь для изоляции переменных в блоках как условие или цикл. Что-то наподобие лямба функций, аргументы нужны лишь временно и не нужно дублировать и везде расставлять.

  • @elnurbda
    @elnurbda Год назад +1

    Большое спасибо за видеоролик!

    • @zproger
      @zproger  Год назад

      Рад что понравилось

  • @FrolFrolow
    @FrolFrolow Год назад

    Классный ролик, все понятно, пусть я почти и не знаю информатику и питон в частности(((

  • @IvanIvanov-dh3sg
    @IvanIvanov-dh3sg Год назад +7

    Спасибо автору, видео супер=) и если можно не ускоряйте видео сами, кому надо могут это сделать средствами ютуба, а замедление вашего видео звучит ужасно(((

    • @zproger
      @zproger  Год назад

      В каком плане не ускорять видео? Именно моменты где я пишу код?
      После ответа попытаюсь исправить, чтоб было комфортней смотреть

    • @IvanIvanov-dh3sg
      @IvanIvanov-dh3sg Год назад +4

      @@zproger нет, код норм. Просто я речь вашу не успеваю осмысливать, может я тормоз=(. Привык к темпу Немчинского. Для меня вы рассказываете слишком быстро. На 0.75 поставил скорость и стало норм. Возможно мне нужно периодически останавливать воспроизведение и думать.

    • @Bluespyy
      @Bluespyy Год назад +1

      @@IvanIvanov-dh3sg мне наоборот кажется что автор медленно говорит. Ставлю 1.25 чтобы не уснуть

    • @zproger
      @zproger  Год назад +4

      Я о том же, посмотрите мои видео раньше, они были в 3 раза медленнее, там дольше 20 секунд никто не смотрел) Если буду снимать в стиле Немчинского, то видео будут юзать для того чтобы заснуть, а не выучить Python :)

  • @user-eo7mv5yc2x
    @user-eo7mv5yc2x 11 месяцев назад

    это конечно здорово, но я видел две двойных рекламы и получил очевидный ответ в конце. короче, спасибо кэп, лай не ставил

    • @zproger
      @zproger  11 месяцев назад

      Я вообще не понимаю какую рекламу вы здесь увидели, если её тут нет

  • @jackmetropolitan7845
    @jackmetropolitan7845 Год назад

    Ууу! До 8:30 думал - "что за ерунда", а потом как понял!
    Спасибо!

    • @zproger
      @zproger  Год назад

      Это точно)

  • @luckytima2315
    @luckytima2315 Год назад +2

    Прикольно )) Как вы сидите на зорине, посидел 3 дня, меня убила дерганая анимация и это на версий за 39 долларов ;p

    • @zproger
      @zproger  Год назад

      Не сижу, это чисто для видео)

    • @luckytima2315
      @luckytima2315 Год назад +1

      @@zproger а что у вас за система на основной машине? я стараюсь вам подражать и сидел на минте как вы, потом увидел zorin решил поставить, но эта анимация меня просто убила (

    • @zproger
      @zproger  Год назад +2

      Мне Manjaro Gnome нравится =)

    • @luckytima2315
      @luckytima2315 Год назад

      @@zproger бегу ставить :p

  • @Anonymous00754
    @Anonymous00754 3 дня назад

    для any пример надо было с еще # добавить что типо любой с # столько сколько будет стока и принтанет... ну так для просто ясности
    а так да спасибо класная штука все помню как то парился как в j for j in list чето присвоить )) потом друг скинул новое в питоне ссылку на это и я прям порадовался ) но так и не применял потом ))) ахахаз

  • @girfeo9338
    @girfeo9338 Год назад +1

    Спасибо, одни из лучших среди лучших

  • @MrNagios
    @MrNagios Год назад +1

    отлично, спасибо за видео

    • @zproger
      @zproger  Год назад

      Спасибо за поддержку!

  • @respise
    @respise 11 месяцев назад +1

    очень интересный акцент, никогда такого не слышал.

  • @maxdemon4778
    @maxdemon4778 Год назад +1

    Спасибо Автор)
    Не знал про это(

    • @zproger
      @zproger  Год назад

      Рад что было полезно!

  • @luispakvard5681
    @luispakvard5681 Год назад +1

    Интересно на питоне инъекции шел кода и в частности Shellcode Reflective DLL Injection

    • @zproger
      @zproger  Год назад

      Интересно, но ютубу такое не понравится

  • @segeus
    @segeus Год назад

    Если бы в print() был аргумент **kwargs и метод работы с ним, то он прекрасно бы кушал print(x = 1).

  • @Dmytro-Tsymbaliuk
    @Dmytro-Tsymbaliuk Год назад +1

    Python дошел до стандарта С++11 с инициализацией переменных, получается

  • @user-gt3lm9ny1e
    @user-gt3lm9ny1e Год назад

    Спасибо за видео!

  • @seregeyvladimirov7065
    @seregeyvladimirov7065 2 месяца назад

    Часто использую этот оператор именно в if statement, больше нигде

  • @dzolud9338
    @dzolud9338 Год назад +1

    Спасибо большое, хорошее видео

    • @zproger
      @zproger  Год назад

      Рад что понравилось!

  • @waserdenser003
    @waserdenser003 Год назад +1

    Только узнал, что питон написан на C...

  • @focsvin
    @focsvin 11 месяцев назад

    Доброе время суток. Я что-то не понимаю. Почему в питоне нельзя писать так f_data = [y for x in data if(y = test(x)) != 4].
    prtint() просто нельзя сделать присвоение в рандомно переменную. Хотя в чем тут проблема я честного говоря не понимаю. В том же C# это можно сделать. А тут то что не так ? По идее просто происходить присвоение значения. А потом эта переменная проверяется в условии.

  • @pro100denchik
    @pro100denchik Год назад +2

    Классно объяснил оператор моржа, но меня смутил знак неравенства ≠, интерпретатор пайтон это понимает? и что надо сделать, чтобы это работало? почему не стандартный знак != неравенства?

    • @fushibuzuka7463
      @fushibuzuka7463 Год назад

      сам глаза округлил..правда не ас в питоне.

    • @zproger
      @zproger  Год назад +1

      Это так редактор кода форматирует) А на деле там обычный !=

  • @eagold
    @eagold Год назад +3

    что это за странный оператор не равно? 06:44

    • @zproger
      @zproger  Год назад +1

      Это так IDE форматирует =)

    • @eagold
      @eagold Год назад

      @@zproger а, фух🙈

    • @user-br2mt5bj6z
      @user-br2mt5bj6z Год назад

      @@zproger А не подскажите, как называется плагин на такое форматирование? Очень понравилось, хотелось бы себе поставить

  • @user-qd5od4fi5j
    @user-qd5od4fi5j Год назад +3

    Очень крутое видео! Хотелось бы больше видео по селениуму. Особенно разбор оператора if с driver.find_element

    • @zproger
      @zproger  Год назад +1

      Постараюсь что-то придумать =)

    • @figaro2440
      @figaro2440 Год назад

      А что там вообще рассматривать, если заданный элемент нашелся if срабатывает, это обычный if, что вы от него еще хотите?

  • @mrLumen2
    @mrLumen2 Год назад +1

    Python медленно превращается в Pascal.

    • @zproger
      @zproger  Год назад

      возможно

  • @izergaer
    @izergaer Год назад +1

    Насколько я понял, это аналог оператора = из C

    • @zproger
      @zproger  Год назад

      Можно сказать и так, но walrus operator более функциональный

  • @user-br5vb8kx5g
    @user-br5vb8kx5g Год назад

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

  • @helish_88
    @helish_88 Год назад +1

    этому оператору уже два года
    python 3.8 Release Date: Oct. 14, 2019

    • @zproger
      @zproger  Год назад

      Ну так никто и не говорил что он новый =)
      Мало кто снимает об этом операторе и хотелось что-то интересное рассказать

    • @helish_88
      @helish_88 Год назад +1

      @@zproger 6 секунда, вы говорите новый оператор. разрешите дое*** :)))

    • @zproger
      @zproger  Год назад

      Упс, что-то не то сказал значит

  • @user-gy9lb9ji5f
    @user-gy9lb9ji5f Год назад +2

    Аж на 12 мин ролик о том, что объясняется одним предложением . Моржовый (walrus) оператор, появившийся в Python 3.8, дает возможность решить сразу две задачи: присвоить значение переменной и вернуть это значение, поэтому порой можно написать код короче и сделать его более читаемым, и он может быть даже более эффективным с точки зрения вычислений.

  • @arsenskavin130
    @arsenskavin130 Год назад +1

    Генераторы делаются в круглых скобках.

    • @zproger
      @zproger  Год назад

      да, речь о других генераторах, не о технологии из языка

    • @arsenskavin130
      @arsenskavin130 Год назад

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

  • @dotend7915
    @dotend7915 Год назад +1

    Дядь, как у тебя неравно записалось как перечеркнутое равно? Оно же как то так записывается: !=

    • @zproger
      @zproger  Год назад

      Это так форматирует IDE для красоты =)

  • @SkveerBoy
    @SkveerBoy Год назад +2

    Годно Годно )

    • @zproger
      @zproger  Год назад

      Благодарю =)

  • @kemal1910
    @kemal1910 Год назад +2

    Си'шники наныли, базарю =)

  • @nikitawhite4516
    @nikitawhite4516 Год назад +1

    Тема для пайшарма очень симпатичная. Как называется?

  • @user-gz4fx4sv6d
    @user-gz4fx4sv6d Год назад +1

    Спасибо большое

    • @zproger
      @zproger  Год назад

      Рад что понравилось

  • @ostrov11
    @ostrov11 Год назад +2

    ... хоспадеблять ... если не знать школьных основ информатики, программирование воспринимается на грани с магией ((( вайтивайти из слесарей дворников продавецпятерочки ((

    • @zproger
      @zproger  Год назад

      xDD

    • @ostrov11
      @ostrov11 Год назад

      @@zproger ... сорян, на пике Балмера был походу, не помню что хотел сказать этим

  • @user-lk9ld5kt6r
    @user-lk9ld5kt6r 6 месяцев назад

    70% ролика ВОООООООООООДЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫ, как душно, просто пздц(

  • @Shurik1236
    @Shurik1236 Год назад +1

    Классика Си: (c = getchar()) != EOF.

  • @asmrasmr327
    @asmrasmr327 Год назад +2

    как использовать такую запись ≠ вместо != ?

    • @zproger
      @zproger  Год назад +1

      Никак, это редактор кода форматирует :)

    • @vdimitrioglo
      @vdimitrioglo Год назад

      material theme установи

  • @lochinlochinov8975
    @lochinlochinov8975 Год назад +1

    А почему у тебя на 6:30 вместо != Поставлено ≠ ?

    • @zproger
      @zproger  Год назад

      Это редактор кода так делает для красоты)

    • @lochinlochinov8975
      @lochinlochinov8975 Год назад

      @@zproger понятно

  • @Ramzes200986
    @Ramzes200986 Год назад

    я вот не понял num вообще не имеет значения и тут получается хочешь присвоить ему 1?

  • @user-qh8jy1cz6z
    @user-qh8jy1cz6z 6 месяцев назад

    спасибо очень полезно начинающему

  • @user-gh2sq4ps4o
    @user-gh2sq4ps4o Год назад

    8:48 вроде python это оптимизирует для одинаковых значений

  • @vladimirkulakov6126
    @vladimirkulakov6126 Год назад +1

    Это в новой версии python добавили?

  • @TheBogdanLisichenko
    @TheBogdanLisichenko Год назад +2

    Если много писать на питоне - можно заработать синтаксический диабет

  • @IIIsteelfighterIII
    @IIIsteelfighterIII Год назад

    Три минуты говорить "почему же мы делаем так, хотя могли бы сделать вот так?" - это искусство. Фулл видео ниасилил.

  • @axil3910
    @axil3910 Год назад +1

    С := понятно, а как ты символ зачеркнутого равно написал? Что это такое вообще? != ?

    • @zproger
      @zproger  Год назад

      Это IDE так форматирует =)

  • @FoxSlyme
    @FoxSlyme Год назад

    Очень затянуто.

  • @mauzeroffc7394
    @mauzeroffc7394 Год назад +1

    а какая у тебя тема в PyCharm?

  • @Alcoholdehydrogenas
    @Alcoholdehydrogenas 11 месяцев назад

    Из какого Го?! Я узнал про этот оператор из Борланд Паскаль!