Дженерики в Python 3.12 - Обзор и лайфхаки

Поділитися
Вставка

КОМЕНТАРІ • 49

  • @artemshumeiko
    @artemshumeiko  28 днів тому +1

    Погружение в Backend разработку за 3 месяца - научись писать API с нуля до вывода в продакшен на моем авторском курсе: clck.ru/3AHCap (есть 3 бесплатных урока)
    Курс доступен для приобретения только до 31 мая 2024 года.
    Прочитать отзывы к курсу можно на Stepik: clck.ru/3AHCbf

  • @user-tq9bu6ki2h
    @user-tq9bu6ki2h 28 днів тому +6

    С чего это вдруг динамическая типизация -- недостаток? Зачем вообще делают ЯП с динамической типизацией? Потому что статический анализатор написать не получилось?)

    • @DimaSamehada-vm7fw
      @DimaSamehada-vm7fw 21 день тому +1

      Потеря производительности + сложность отладки и обнаружения ошибок

    • @naugad2
      @naugad2 13 днів тому

      да. потому что хотели упростить язык а такой статический анализатор как например у F# сразу не спроектировали. а потом язык взлетел и уже поздно делать ломающие изменения

  • @ufc_uz6
    @ufc_uz6 28 днів тому

    Артем при вызове функции как использовать дженерики как в ts?

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n Місяць тому +4

    Охуж эти дженерики. Я такой на TS съел, чуть не отравился😂

  • @gleb29
    @gleb29 28 днів тому +1

    Артём, привет, почему так моргает свет в начале?

    • @artemshumeiko
      @artemshumeiko  28 днів тому

      потому что я экспозицию на камере не научился настраивать :/

  • @raymond4193
    @raymond4193 28 днів тому +3

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

    • @user-sz5yn3fk8d
      @user-sz5yn3fk8d 28 днів тому +1

      Писать функции на плюсах 😂

    • @klayd4009
      @klayd4009 27 днів тому +2

      Проверку типа можно организовать через isinstance. Однако в питоне нет возможности через сам TypeVar проводить манипуляции с типами, поэтому только так.

  • @xpaladin4568
    @xpaladin4568 28 днів тому +2

    А что же будет после 31-го мая, другой курс?) Пока что звучит как выстрел себе в ногу

    • @artemshumeiko
      @artemshumeiko  28 днів тому +4

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

  • @AHTOH_IO
    @AHTOH_IO 28 днів тому

    Да норм. Дженерики и в курсе по фастапям пригодятся) полиморфные репозитории можно делать

  • @mndtr0
    @mndtr0 17 днів тому

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

  • @romanbush5164
    @romanbush5164 28 днів тому +2

    ничоси 😳 не зря я с# изучал 🤣

    • @user-iv3eh4hp3z
      @user-iv3eh4hp3z 28 днів тому

      кст да, я тоже шарп учил. Почти всё, что там есть под капотом у шарпа, в питоне подключается отдельно)
      но нет крутой лямбды, как в шарпе - увы

  • @tolb1517
    @tolb1517 28 днів тому

    Ок.

  • @set1qs
    @set1qs 27 днів тому

    Что за IDE? Это Pycharm?

    • @klayd4009
      @klayd4009 27 днів тому

      Да

    • @artemshumeiko
      @artemshumeiko  27 днів тому

      да, PyCharm Professional

    • @set1qs
      @set1qs 27 днів тому

      @@artemshumeiko Просто тема приятная и шрифт, иконки ) Пытаюсь настроить так же, но чёт безуспешно (

    • @DimaSamehada-vm7fw
      @DimaSamehada-vm7fw 21 день тому

      @@set1qs так у него дефолтная тема и шрифт тоже дефолтный JetBrains Mono

    • @mndtr0
      @mndtr0 17 днів тому

      @@set1qs включи новый UI

  • @andviktor
    @andviktor 19 днів тому

    Выглядит как что-то, что делает код крайне трудночитаемым. Конструкция func[T](param: list[T]) -> T - это жесть.

    • @artemshumeiko
      @artemshumeiko  18 днів тому +1

      тут дело времени
      раньше тоже было тяжело смотреть на такое. Сейчас норма

    • @andviktor
      @andviktor 18 днів тому

      @@artemshumeiko надо пробовать, но кстати в коде модулей стандартной библиотеки не встречал таких штук почему-то, видимо экзотика

  • @user-fw7lk4wt6w
    @user-fw7lk4wt6w 25 днів тому

    Только полный гуманитарий будет назначать одной и той же переменной разные типы. Или он не ПРОЕКТИРУЕТ свои программы, прежде чем начнёт их писать?

    • @artemshumeiko
      @artemshumeiko  25 днів тому +2

      всмысле? В питоне все так делают, динамическая типизация же)

  • @Anonim-im6ln
    @Anonim-im6ln Місяць тому

    Ого, що це?

  • @slmpnv
    @slmpnv 29 днів тому +6

    Кто такие дженерики?

    • @andrewbondaryuk
      @andrewbondaryuk 28 днів тому

      Это в java, net, go, rust.
      Есть template в плюсах.
      Общий код для разных типов.
      Например без дженериков/шаблонов для списков значений int, double нужно будет делать две реализации. С ними - одну.

    • @Mytest437
      @Mytest437 28 днів тому +1

      по простому: если ТипЗначения представить значением, то дженерик это переменная в которых их хранят и описывают функции не конкретными типами, а через эти переменные)

    • @user-kz5tp8zs8n
      @user-kz5tp8zs8n 28 днів тому +1

      Дженерик это дешевый аналог бадов

    • @borismoiseev8456
      @borismoiseev8456 28 днів тому +1

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

    • @user-ut9xm3zi1i
      @user-ut9xm3zi1i 28 днів тому

      Порода хомяка

  • @user-bn5np9dl3s
    @user-bn5np9dl3s 28 днів тому

    Странная практика буквы использовать. Это у вас в компании так принято? Почему [int] не написать?

    • @artemshumeiko
      @artemshumeiko  28 днів тому +5

      так в этом суть дженериков. Делать функции с общим типом, без привязки к конкретному типу

    • @mndtr0
      @mndtr0 17 днів тому

      В шарпе тоже принято в качестве дженерик-типа писать T или T + , например TKey, TValue

  • @Behruz-pr2oi
    @Behruz-pr2oi 28 днів тому

    это как в реальных проектах использовать

    • @artemshumeiko
      @artemshumeiko  27 днів тому

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

  • @Mytest437
    @Mytest437 28 днів тому +3

    У языка Python нет минусов. Просто не надо язык, который был придуман для обучения новичков/скриптинга/прототипирования использовать для ВСЕГО. Конечно когда начинаешь все больше писать на нем промышленный код, тебе кажется что у него есть недостатки. А потом такие писальщики через пять лет, когда бекенд начинает загибаться, переписывают какую-то часть на производительных языках Go/Rust/C и такие с глазами по пять копеек.... о производительность в десять раз стала круче 😁😁 тучи развинулись, и молния Зевса открыла новый мир)

    • @__.X3.__
      @__.X3.__ 28 днів тому +2

      Сомнительно. Бизнесу нужно быстро, +уже во время разработки у бизнеса часто меняется требования и даже архитектура. В таких случаях "промышленные" языки могут отсохнуть и отвалится. По производительности, в какие сто раз может увеличится производительность, если основное время тратится не на обработку, а на транспорт данных по сети (т.е. фактор одинаковый для всех языков). Да и всегда ли производительность приоритет у бизнеса?

    • @redneck_prm5429
      @redneck_prm5429 28 днів тому

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

    • @__.X3.__
      @__.X3.__ 28 днів тому

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

    • @Mytest437
      @Mytest437 28 днів тому

      @@redneck_prm5429 Все эти Python/Mojo Javascript/TypeScript свою работу делаю на "пол шишечки". Не вижу я в этом хороший архитектурный путь. Всегда там все внедряется на половину, потому что нужно ж сохранять совместимость с динамичным языком. Плюс они портят и размывают границы там где работу могут выполнять например джуниоры и их кусок пишется на скриптовых простых языках, а хардовую часть опытные разработчики пишут отдельно на предназначенном языке. И таким образом джуниор до поры времени не сталкивается с сложным кодом и не лезет туда куда не надо. А так какой смысл языка "для начинающих" если приходишь в компанию, а там на нем все написано и надо уже круто шарить.
      "...А скорость и потребление железных ресурсов за пределами настоящего хайлоада мало кого волнует..." во первых плох тот проект, который не стремиться стать хайлоад. Странно писать сайт, которому завтра ты не хочешь популярности. А во-вторых ты просто не знаешь, какой твой проект завтра станет популярным. А вдруг он взлетит резко, потому что интересную программу/сайт написал. Нагрузка прет, а пересесть на другие технологии часто не получиться просто и дешево.
      Да Python Javascript дают быстрый взлет, но всегда за быстрым наспех скроенными проектами тянется долгосрочные последствия по поддержанию этого проекта.

    • @Mytest437
      @Mytest437 28 днів тому

      @@__.X3.__ Ну во первых есть разные задачи и сайты, не везде транспорт это львиная обработка, особенно так где сайт это онлайн-программы. во-вторых обработка транспорта тоже делается на каких то языках. И почему то в тестах фреймверков, когда меряются количеством фпс, я не сильно видел в лидерах фреймверки на Python. А лидерство берут все те же Go/Rust/C и т.д. Так что не отсохнут и не отвалятся 😄