Лямбды. Не такие и страшные

Поділитися
Вставка
  • Опубліковано 5 лют 2025
  • В туториалах и книгах порой усложняют описание лямбд, вываливая на новичков лямбда-исчисление, анононимность, Алонзо Черча и так далее. Постараюсь объяснить их более просто. Рассмотрим что такое лямбда, какие есть ограничения у нее, посмотрим на примеры использования, подумаем чем можно заменить и решим нужно ли новичку знать лямбды.
    Полезные ссылки:
    docs.python.or...
    docs.python.or...
    docs.python.or...
    docs.python.or...
    PEP-8: "Always use a def statement instead of an assignment statement that binds a lambda expression directly to an identifier"
    Присоединяйтесь к помощи каналу, будет интересно)
    ✔️Бусти boosty.to/pyth...
    ✔️Юмани 410011506612886
    Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
    Смотри там где удобно🤩
    ✔️ python_...
    ✔️ rutube.ru/chan...
    ✔️ dzen.ru/python...
    ✔️ / pythonrussian
    ✔️ t.me/python_ru...
    #Python #PythonRussian #PyCharm

КОМЕНТАРІ • 68

  • @krolik_samurai
    @krolik_samurai 2 роки тому +9

    На мой лично взгляд - один из самых недооценённых туторов по питону. Классные примеры и объяснение простое как палка)) очень круто! подписался, обнял, пасеба

  • @ПавелПрохоров-е9ц
    @ПавелПрохоров-е9ц 6 місяців тому +3

    Мой любимый канал по питону для новичков

  • @ivmax96
    @ivmax96 Рік тому +4

    А мне понравился стиль изложения автора. Достаточно глубоко, с интересными нюансами и ловушками, но в тоже время простыми словами. Спасибо!

  • @МихаилКоновалов-х7ч
    @МихаилКоновалов-х7ч 3 місяці тому

    Это просто потрясающе! Так просто и понятно объяснять. У вас талант. Жаль только сейчас наткнулся на ваш каналл. Каждое видео смотрю взапой, просто не оторваться. И главное все понятно.

    • @PythonRussian
      @PythonRussian  3 місяці тому

      спасибо, для вас и стараемся

  • @LisTyrist
    @LisTyrist 10 місяців тому +2

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

  • @aleksproger_il
    @aleksproger_il Рік тому +2

    Офигенная подача! Я дизертировал из С# в Python и у меня начались затупы, но к счастью я нашёл этот канал!

  • @Itri404
    @Itri404 3 роки тому +7

    Твои уроки + чтение реально дают пользу в понимание ЯПа - что не понял в книгах понял здесь. Продолжай в том же духе!!!

  • @Rejgan318
    @Rejgan318 3 роки тому +5

    Обычно контент на ютубе строится по принципу "если сам не состоялся как программист, буду обучать и монетизироваться". Смотришь такое, понимаешь, что знаешь больше учителя, плюешься от огромного количества ляпов, неточностей или явных ошибок. Здесь все не так. Автору респект, квалификация на высоте, тонкости для правильного понимания разжевываются. Я не нашел к чему придраться :) Ну разве что иногда код сразу не пишет по PEP8, но часто запускает автоформатирование :) Подпишусь.

    • @PythonRussian
      @PythonRussian  3 роки тому +5

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

    • @Rejgan318
      @Rejgan318 3 роки тому +4

      @@PythonRussian Это мелочи. Главное это понимание предмета и квалификация. А это есть.
      Странно, что так мало подписчиков. Иногда не хватает лаконичности и наглядности. Например когда сверху в комментариях набивается в реальном времени текст по пунктам - что усвоили, на что обратить внимание, что запомнить. Было бы классно, чтобы это выскакивало отдельной яркой табличкой. Но это видеомонтаж, куча времени. Если сложно и долго, выбор между красотой и контентом - то пусть лучше остается все по-старому, контент.
      Из пожеланий - хотелось бы продолжения темы git/github именно с точки зрения практического применения персонально и в команде. Пусть кратко, но по делу и на практике, а не как у большинства - показ синтетических примеров из документации. Создание веток, откат к конкретной версии, предложение исправлений (пулл реквест?) для стороннего чужого репозитория, принятие чужих, простейшая структура репозитория, оформление, создание своего архива программ на гитхаб и зачем это нужно... Да, понимаю, емко и сложно. Но этого ни у кого нет. Либо многочасовые видео с описанием команд Git, либо синтетическое бесполезное убожество. По прошлому видео все понятно, но хочется дальше в том же ключе. Может в ущерб подробного описание дать больше практических приемов, советов, последовательности действий. Остальное можно и в других местах почитать.

    • @PythonRussian
      @PythonRussian  3 роки тому +4

      @@Rejgan318 понял, добавил в список тему про ветки, сделаю

    • @Rejgan318
      @Rejgan318 3 роки тому +1

      @@PythonRussian Ждем... :)

  • @paz-ns
    @paz-ns 4 місяці тому +1

    "Где она - фиг знает. Найдёшь, когда тебя вызовут" 14:28 🤣🤣🤣 Спасибо за настроение)

  • @IvanSergienko-b6w
    @IvanSergienko-b6w Місяць тому

    numb = 1
    res = '0' if numb == 0 else (lambda: '1' if numb == 1 else '2')()
    print(res)
    А что ж Вы не сказали что лямбду можно так сразу вызывать...Я так долго мучился с этой задачей уже и так и так, пришлось всё таки обращаться к интернету за помощью) А за уроки респект и уважуха...лучшие уроки что видел на ютубе, прям для начинающих не пойдет, но с небольшой базой очень даже круто!

  • @_mrmark
    @_mrmark 10 місяців тому

    Супер! Огромное спасибо! Уже на третьей минуте понял о лямбде больше чем знал до этого.

  • @krevedko_krevedkin
    @krevedko_krevedkin 4 роки тому +4

    спасибо за ваш контент, очень много полезных вещей узнал

    • @PythonRussian
      @PythonRussian  4 роки тому +1

      спасибо, если есть темы, которые хотите увидеть в моих видео -пишите

    • @krevedko_krevedkin
      @krevedko_krevedkin 4 роки тому

      возможно как одна из тем это static method, class method и property у классов в каких случаях их следует использовать и зачем нужны

    • @PythonRussian
      @PythonRussian  4 роки тому +2

      @@krevedko_krevedkin не уверен, что это будет интересно в отрыве от ООП, но записал себе -попробую

  • @ХалилМаденбай
    @ХалилМаденбай 3 роки тому +2

    Отличный урок! Благодарю за отличный обзор. спасибо за ваш контент, очень много полезных вещей узнал. Канал пушка, закрепляю прочитанный материал! Спасибо

  • @Дмитрий-у5к7ф
    @Дмитрий-у5к7ф 3 роки тому +1

    Нравится подача материала. Однозначно лайк

  • @theverynvg
    @theverynvg Рік тому

    Отличный ролик.Читаю Лутца, и у него эта тема выглядит сложновато, после промотра все встало на свои места.Спасибо

  • @Yuriy_belous
    @Yuriy_belous Рік тому

    Хорошо объясняешь, лайк, подписка. Спасибо за контент

  • @denissavast
    @denissavast 4 роки тому

    Благодарю за отличный обзор!

  • @y18kotov
    @y18kotov 2 роки тому

    Все понятно. Спасибо

  • @МохПодумалНоПромохнулся

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

  • @dimk7983
    @dimk7983 4 роки тому

    Спасибо, интересно.

  • @azhigg
    @azhigg 3 роки тому

    Спасибо

  • @sevakvart1111
    @sevakvart1111 4 роки тому

    Отличный урок!

  • @ИванИванин-р2ч
    @ИванИванин-р2ч 3 місяці тому

    Что наиболее производительнее? По времени, по памяти? лямбда, функция, аттритемгеттер, листкомпс?

    • @PythonRussian
      @PythonRussian  3 місяці тому

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

    • @ИванИванин-р2ч
      @ИванИванин-р2ч 3 місяці тому

      @@PythonRussian так я не профи, я не знаю, как сделать замер. Наверное через библу тайм и вывод времени, это замер скорости

  • @Евгений-ъ9к1л
    @Евгений-ъ9к1л 6 місяців тому

    Лучший канал -это факт. А задачки не осилил вконце. Очень сложно. Какой это уровень сложности из 10?))

    • @PythonRussian
      @PythonRussian  6 місяців тому

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

    • @Евгений-ъ9к1л
      @Евгений-ъ9к1л 6 місяців тому

      @@PythonRussian я нашел ответ. Но не смог его понять. Чату гпт и его ответам можно доверять? Он нормальный код пишет?

  • @mvo5450
    @mvo5450 Рік тому +1

    Большинство каналов по теме талдычат как дикторы. Есть некоторые, которые учат, как школьные учителя. Здесь же совершенно иной ракурс преподнесения знаний. Озвучиваются такие реальные/"боевые" моменты. Такой ракурс можно получить, наверное, только уже устроившись джуном - от старших коллег.
    Конечно, иногда хочется более пригодных для жизни примеров.., но в любом случае - этому каналу цены нет.

  • @ЕвгенийЕгиоя-с3щ
    @ЕвгенийЕгиоя-с3щ 4 роки тому +3

    еще как вариант чет-нечет в лямде: even_odd = lambda x: ['even', 'odd'][x & 1]

    • @PythonRussian
      @PythonRussian  4 роки тому +1

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

  • @rpuropu
    @rpuropu 3 роки тому

    Насчёт прочтения чужого кода. Я тоже считаю, что это прям развивает круто, жаль что контента с разбором чужого кода мало. Так, в маленьких задачах. Я осмелюсь предложить рубрику, попадаются штучные ролики по ютубу такие, на кодварз люди решают задачи, после решения открываются чужие решения. и вот там так круто и суперкоротко бывает... просто мозг в экстазе)
    Приведу пример. Стандартная школьная задача, считать сумму цифр из числа, пока не останется одна цифра. Да, там я понапридумывал с циклами, а потом в списке лучших вариантов увидел это:
    def digital_root(n):
    return n%9 or n and 9
    Всё!.. челвоек явно в теориях чисел разбирается. Но такое слабо научит кодить, здесь уже скорее вопрос эффективности. А вот какие лазейки можно находить в официальной документации питона, что бы облегчить код - вот это искусство. Я вижу что тебе нарвится ковырять, может зайдёт) контента мало такого - через официальные библиотеки разбирать чужие решения и совершенствовать свой вариант)

    • @PythonRussian
      @PythonRussian  3 роки тому

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

    • @rpuropu
      @rpuropu 3 роки тому

      @@PythonRussian начинай с низких уровней и корабкайся вверх, сохраняй в плейлист и смотри статистику просмотров по уровням сложности, как вариант

  • @Anton16180
    @Anton16180 Рік тому +2

    Прифигел от автодопа на 23:09
    Оказывается, что можно набирать функцию как метод, чтобы pycharm её сам подставил О__О"

  • @Dima7100
    @Dima7100 2 роки тому

    Реализовать фор не смог, непонятно, что на выходе ожидается, я что-то пошел через попытку сделать объект итерируемым через iter() и вызывать next(), но вызывается он один раз, а как там рекурсию пихнуть не понял)

  • @Прогулкивокругсвета-ф2ю

    Не совсем понял как должна работать ламбла цикл, каким образом она принимает условие? С остальными заданиями справился

    • @PythonRussian
      @PythonRussian  5 місяців тому +1

      через рекурсию например, есть хорошая и короткая книга на эту тему David Mertz "Functional programming in Python"

  • @alexshal3812
    @alexshal3812 3 роки тому

    Спасибо!! Вопрос: по этой же причине (или схожей) при создании матрицы таким способом: m = [ [0] * 4] * 5 все объекты внутри массивов матрицы ссылаются на одни и те же объекты?

    • @PythonRussian
      @PythonRussian  3 роки тому +1

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

  • @СергейСинюк-и5м
    @СергейСинюк-и5м 2 роки тому

    Добрый день, если можно кратенькое пояснение разницы __repr__ от __str__. Спасибо.

    • @PythonRussian
      @PythonRussian  2 роки тому

      это будет когда(и если) дойдем до магических методов

  • @АндрейСамофалов-б7г

    Какой магией .p превращается в принт?)

    • @PythonRussian
      @PythonRussian  2 роки тому

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

  • @СергейСинюк-и5м
    @СергейСинюк-и5м 2 роки тому

    Про for while не понял если можно хотя бы код киньте)
    Факториал через лямбду ↓↓↓↓↓↓↓

    • @СергейСинюк-и5м
      @СергейСинюк-и5м 2 роки тому +2

      fact = lambda number: number * fact(number - 1) if number > 1 else number

    • @СергейСинюк-и5м
      @СергейСинюк-и5м 2 роки тому

      fact = lambda number: number * fact(number - 1) if number > 1 else (1 if number == 0 else number)

    • @Sp0Raw
      @Sp0Raw Рік тому

      from functools import reduce
      print(reduce(lambda x, y: x * y, range(1, 6), 1)) # !5 ->120

  • @ФБ-14БолговМикола
    @ФБ-14БолговМикола 3 роки тому

    извините, зачем вы пишите "if __name__ == '__main__'": ?

    • @PythonRussian
      @PythonRussian  3 роки тому +1

      вот тут можно посмотреть ua-cam.com/video/RG8dobvf6kE/v-deo.html

    • @ФБ-14БолговМикола
      @ФБ-14БолговМикола 3 роки тому

      @@PythonRussian спасибо большое, удачи вам!!!! очень классные видео, смотрю перед экзаменом вас

  • @AdmiralUshakovvv
    @AdmiralUshakovvv 3 роки тому +1

    мелко бро, можно покрупней)

    • @PythonRussian
      @PythonRussian  3 роки тому

      можно, в последующих видео увеличиваю шрифт

  • @user-buser_eto_ja
    @user-buser_eto_ja 2 місяці тому

    Пришел после зри в корень)

    • @PythonRussian
      @PythonRussian  2 місяці тому

      это правильное решение

  • @warflow
    @warflow Рік тому

    Ничего не видно

    • @atheroot
      @atheroot 7 місяців тому

      Зум в помощь и все видно.

  • @intruder70
    @intruder70 7 місяців тому

    думал что можно впихнуть в объяснение лямбда функции на 40 минут. оказывается воду