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

แชร์
ฝัง
  • เผยแพร่เมื่อ 21 พ.ย. 2024

ความคิดเห็น • 54

  • @artemshumeiko
    @artemshumeiko  6 หลายเดือนก่อน +1

    💡 Попробуй онлайн-тренажёр для подготовки к техническому собеседованию: clck.ru/3B5gwP 💡
    Забирай роадмап изучения самого востребованного фреймворка на Python - FastAPI здесь: t.me/ArtemShumeikoBot

  • @НиколайРюмин-й6и
    @НиколайРюмин-й6и 7 หลายเดือนก่อน +6

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

  • @raymond4193
    @raymond4193 6 หลายเดือนก่อน +4

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

    • @АлександрТучак-л5р
      @АлександрТучак-л5р 6 หลายเดือนก่อน +2

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

    • @klayd4009
      @klayd4009 6 หลายเดือนก่อน +3

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

  • @ufc_uz6
    @ufc_uz6 6 หลายเดือนก่อน

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

  • @xpaladin4568
    @xpaladin4568 6 หลายเดือนก่อน +2

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

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน +4

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

  • @AHTOH_IO
    @AHTOH_IO 6 หลายเดือนก่อน

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

  • @АлександрКоновалов-ш1н
    @АлександрКоновалов-ш1н 6 หลายเดือนก่อน +9

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

    • @DimaSamehada-vm7fw
      @DimaSamehada-vm7fw 6 หลายเดือนก่อน +1

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

    • @naugad2
      @naugad2 6 หลายเดือนก่อน

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

    • @datski_live
      @datski_live 5 หลายเดือนก่อน

      @@DimaSamehada-vm7fw кому это нужно идут учить голанг

    • @iooi6274
      @iooi6274 7 วันที่ผ่านมา

      А какая может быть типизация у интерпретируемого языка? Лол. Статическая что ли? Сделайте питон компилируемым - будет вам статическая типизация

  • @gleb29
    @gleb29 6 หลายเดือนก่อน +1

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

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน

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

  • @romanbush5164
    @romanbush5164 6 หลายเดือนก่อน +2

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

    • @ГришаГрибов-я3д
      @ГришаГрибов-я3д 6 หลายเดือนก่อน

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

  • @datski_live
    @datski_live 5 หลายเดือนก่อน +2

    Щас бы говорить, что динамическая типизация, это недостаток...

  • @DanilIneev
    @DanilIneev 4 หลายเดือนก่อน

    Ушёл из активной питон-разработки уже несколько лет как. Если придется возвращаться, проще на что-то со статической типизацией, чтобы не заниматься этим онанизмом с аннотациями

  • @mndtr0
    @mndtr0 6 หลายเดือนก่อน

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

  • @set1qs
    @set1qs 6 หลายเดือนก่อน

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

    • @klayd4009
      @klayd4009 6 หลายเดือนก่อน

      Да

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน

      да, PyCharm Professional

    • @set1qs
      @set1qs 6 หลายเดือนก่อน

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

    • @DimaSamehada-vm7fw
      @DimaSamehada-vm7fw 6 หลายเดือนก่อน

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

    • @mndtr0
      @mndtr0 6 หลายเดือนก่อน

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

  • @ВладимирМатыцин-с8з
    @ВладимирМатыцин-с8з 6 หลายเดือนก่อน

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

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน +2

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

  • @andviktor
    @andviktor 6 หลายเดือนก่อน

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

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน +1

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

    • @andviktor
      @andviktor 6 หลายเดือนก่อน

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

  • @tolb1517
    @tolb1517 6 หลายเดือนก่อน

    Ок.

  • @paradigmx5163
    @paradigmx5163 3 หลายเดือนก่อน

    В Python с роду не было переменных. В самом начале ролика наврал).

  • @slmpnv
    @slmpnv 6 หลายเดือนก่อน +7

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

    • @andrewbondaryuk
      @andrewbondaryuk 6 หลายเดือนก่อน

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

    • @Mytest437
      @Mytest437 6 หลายเดือนก่อน +1

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

    • @ОлегКовалевский-п4п
      @ОлегКовалевский-п4п 6 หลายเดือนก่อน +4

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

    • @borismoiseev8456
      @borismoiseev8456 6 หลายเดือนก่อน +2

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

  • @Behruz-pr2oi
    @Behruz-pr2oi 6 หลายเดือนก่อน

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

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน

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

  • @ПарфентьевВладислав
    @ПарфентьевВладислав 6 หลายเดือนก่อน

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

    • @artemshumeiko
      @artemshumeiko  6 หลายเดือนก่อน +6

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

    • @mndtr0
      @mndtr0 6 หลายเดือนก่อน

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

  • @Mytest437
    @Mytest437 6 หลายเดือนก่อน +4

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

    • @__.X3.__
      @__.X3.__ 6 หลายเดือนก่อน +2

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

    • @redneck_prm5429
      @redneck_prm5429 6 หลายเดือนก่อน

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

    • @__.X3.__
      @__.X3.__ 6 หลายเดือนก่อน

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

    • @Mytest437
      @Mytest437 6 หลายเดือนก่อน

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

    • @Mytest437
      @Mytest437 6 หลายเดือนก่อน

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

  • @Anonim-im6ln
    @Anonim-im6ln 6 หลายเดือนก่อน

    Ого, що це?