Новые фишки Python 3.10 сделают твой код лучше (Python 3.8 vs Python 3.10)

Поделиться
HTML-код
  • Опубликовано: 11 июн 2024
  • ⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
    ⭐ Телеграм канал: t.me/+sG__YJmG3cdlMjQx
    В данном видео мы рассмотрим новые возможности, которые добавили в Python3.10. Рассмотрим изменение производительности, которое принесло +30% к скорости и защиту EXE файлов.
    Мы сравним старый подход к написанию кода на Python3.8 с подходом на Python3.10. Узнаем о новых фишках и особенностях.
    📁 Github: github.com/Zproger
    📁 Все плейлисты с уроками: bit.ly/39GaY89
    📁 Связаться со мной: zproger777@gmail.com
    📁 Поддержать криптовалютой: github.com/Zproger/donate
    Тайм-коды:
    0:00 - Что нового в Python3.10?
    0:43 - Как изменилась типизация?
    2:14 - Множественное сравнение типов
    3:05 - Новые крутые возможности dataclass (KW_ONLY)
    7:14 - Возможность создать собственный тип данных
    8:25 - Новая функция bit_count python
    9:04 - Новая возможность контекстного менеджера with
    9:40 - Производительность Python3.10
    10:34 - Улучшение безопасности Python3.10
    11:07 - Стоит ли делать обзор на Python3.11?

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

  • @BadekYO
    @BadekYO Год назад +20

    2:30 - у функции isinstance ещё с 3.6 второй аргумент был говорящим именем class_or_tuple, так что новшества тут нет, функция всегда могла сравнивать тип объекта с множеством классов, но для этого их нужно было в явном виде передать в виде кортежа.
    8:25 - метод возвращает не количество битов, а количество значащих единиц в бинарной записи, для подсчета количества бит как был, так и остается метод bit_length.
    9:04 - да всегда можно было открыть несколько контекстных менеджеров, собственно именно так асинхронный контекст семафоров и открывался, его ставили вызовом другого асинхронного контекста, который требует ограничения количества открытий единовременно, сейчас просто добавили синтаксис со скобками для форматирования и не более того.
    Честно говоря, поражен, что нет упоминания одной из самых главной фичей 3.10 - Pattern Matching.

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

      О Pattern Matching есть отдельное видео на канале, так как не хотел до 30 минут это видео расширять:
      ruclips.net/video/jIFeDDf69Uk/видео.html

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

    Спасибо, видео супер, очень интересно и познавательно=)

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

      Спасибо

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

    Спасибо за информацию. То что нужно !

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

      Благодарю!

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

    про kw_only, ты как-то очень сильно усложнил всё гораздо проще. В питоне есть такой синтаксис:
    def func(x, *, y, z):
    pass
    func(1,1,1) - будет ошибка, т.к. y и z keyword-only аргументы
    правильным является func(1, y=1, z=1)
    KW_ONLY это всего лишь синтаксический сахар для датаклассов , который позволяет сделать keyword-only аргументы. И "_:KW_ONLY" - аналогичен "*" в примере выше и все атрибуты после него будут keyword-only
    Если кому интересно глубже копнуть, советую почитать про Positional vs keyword arguments!
    И насчёт нейминга "ключевые слова" - не слышал по крайне мере такое название, в литературе их называют именованные аргументы.
    Пример:
    from dataclasses import dataclass
    @dataclass
    class Human:
    name: str
    age: int
    # ты можешь использовать как keyword так и positional аргументы для создания объекта
    human1 = Human('alex', 24)
    human2 = Human(name='alex', age=24)
    @dataclass(kw_only=True)
    class HumanKW:
    name: str
    age: int
    # ты можешь использовать только keyword аргументы для создания объекта
    human3 = HumanKW(name='alex', age=24)

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

      Спасибо

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

      Спасибо, так понятнее. KW_ONLY=Используй только именованные аргументы чтобы не вводить в заблуждение коллег.

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

    Контент информативный и полезный, спасибо!

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

      Благодарю!

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

    Интересно
    Полезная инфа, смотрю не только этот канал, на другом API парсинг надоел)
    Не подскажешь? Писал оптимизацию через all и заметил, что не работает правильно.
    Решение - писать метод через list comprehension. И потом сравнивать, но странно, что built-in глючит😟

  • @smartbox2445e
    @smartbox2445e Год назад +5

    В python 3.10 также добавили конструкцию match/case это аналог case of x,используется для упрощения работы и уменьшения if/else

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

      Это да, об этом было видео на канале:
      ruclips.net/video/jIFeDDf69Uk/видео.html

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

    Спасибо за видео, интересный контент

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

      Благодарю!

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

    Контент что надо, особенно про тайп элиасы
    Круто, что канал развивается и все такое..
    Но когда видосы по асинхронщине?

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

      По мере возможностей делаю, видео будут это точно =)

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

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

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

    как говорится, в питоне нельзя, но если очень хочется, то можно)

  • @kirill_monster
    @kirill_monster Год назад +11

    Покажи теперь как на новой версии python'a распоковать exe файл

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

      Пока что никак :)
      Если будет способ, сделаю видео

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

      @@zproger есть такой способ. Pycdc. Некоторые опкоды в него не завезли, но большинство програм он декомпильнет.

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

      Вот за это спасибо, посмотрю обязательно

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

      @@zproger Не будет ничего лучше обычной иды, нет?) Ida Pro is a better way for .exe, ain't it? Ну, получим псевдокод, по которому уже можно всё посмотреть максимально прозрачно

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

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

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

    Почему у тебя так мало подписчиков?, такой контент должен оцениваться в 3000000 подписчиков минимум

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

      Надеемся что скоро это количество подписчиков будет =)
      Спасибо за поддержку

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

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

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

    Здарова... Спасибо за информацию

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

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

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

    3:09 видео ВЫ подсказках... 3:16 Добавили аргумент КЫ декоратору... 4:04 Сравнить СЫ результатом программы...
    Почему такое произношение предлогов? Это программа обработки речи так настроена?

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

      Возможно, буду смотреть :)
      А ещё вероятно что это я так произношу. Так как видео идет 12 минут, но это уже готовое видео, а с фейлами оно все 40 минут, поэтому когда 40 минут озвучиваешь, становится очень сложно четко произносить слова, поэтому может быть и такое)

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

    А как ты сделал чтобы у тебя символы "->" преобразовались в стрелку?

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

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

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

      @@zproger я нашел эту настройку:
      Settings -> Editor -> Font
      И там активировать пункт "Enable ligatures"
      Именно эта настройка включает такое форматирование.

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

    Чегоооо? 2:32 Дядя, isinstance вторым аргументом может принимать кортеж isinstance(2.5, (int, float)) -> True. Ну лайк всё равно ставим

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

      Спасибо, как-то и не заметил что он может кортеж принимать.

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

    Трюк с with очень удобный!

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

    в 3.11 тоже много чего оптимизировали, а isinstance может принимать tuple[type] 😉

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

      Благодарю! До 3.11 ещё доберемся, и когда-то до 4.0 =)

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

    😍

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

    А покажи как на питон 3.10 забить гвоздь в стену с помощью шуруповерта

  • @yuzu-dev
    @yuzu-dev Год назад +2

    Привет, полезное видео!)
    Только.. isinstance и до этого можно было сравнивать по нескольким типам:
    a = 1
    isinstance(a, (int, str, list, float))
    :D

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

    Почему все "в", "к" и "с" заменены по тексту на "вы", "кы" и "сы" соответственно?

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

      Я просто делаю задержку на этих буквах, зачем мне специально так говорить)

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

      @@zproger а зачем вы так специально говорите?

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

    А если я переустановлю питон на 3.10, то мне придется все мои проги с нуля переписывать?

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

      Не, всё остается также

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

      @@zproger а, спасибо, а то друг чет ноет. Говорит, что не будет обновляться, чтобы все не переписывать
      :/

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

    А почему канал называется Z Proger?

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

      Это вопрос в стиле "Почему apple называется apple".
      Не знаю, просто так назвал, это не связано с политикой и нику 3 года уже.

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

      @@zproger а ну тогда можно попробывать подписаться 👍 А то подумал, может этот канал ник сменил 😬

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

      Не, я никак не связан с политикой

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

    Ох этот модный питон... Я боюсь представить что будет, если Rust lang однажды обойдёт и заменит Python... Мне уже бы хватило на Rust lang получить фреймворк для работы с нейросетями и вот тогда сверх ИИ был бы реальным. Я очень редко ошибаюсь в IT-сфере. Ещё на втором курсе всем говорил, что пишите всё на 2-ух популярных языках - JS и Python. И так же я могу сказать и сегодня, но только новичкам, а тот кто уже на 4-ом курсе - учите Rust lang и сможете реализовать свою децентрализованную mTLS БД (документно-объектную) для своих проектов нейросетей(аналитики) и красивых интерфейсов Python(back) - JS(front).

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

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

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

      Rust крутой, юзаю его как 2й язык

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

      @@zproger и даже не было борьбы с борров чекером?:)

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

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

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

      Были конечно) Но спустя время понял что к чему.
      После питона достаточно легко перейти на раст, все либы идентичные и подход к написанию кода очень похожий.

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

    Что за шрифт в терминале?

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

      Стандартный шрифт ZorinOS

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

      @@zproger Из ответа так не ясно что это за шрифт, но и на том спасибо

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

      Дополнение: судя по скриншоту дефолтных настроек шрифта из ZorinOS 16 это "JetBrains Mono Regular"

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

    Что за линукс дистрибутив?

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

    изинстанс можно передать кортеж из типов

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

      Да, ошибочка вышла, спасибо

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

    Спасибо за полезную информацию! Только маленькая просьба. Пожалуйста, не надо произносить "с", "в" и "к" как "сы" и "вы" и "кы" 🙏

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

    Всё что скомпилировано в exe, остаётся в exe 😬

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

    Что за тема для PyCharm?

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

    о каких экзешниках речь?

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

      которые идут на выходе pyinstaller

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

      @@zproger Окей, а можно для линукс сделать сборку, работая на винде?

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

    С 2:14 до 3:05 ничегошеньки непонятно

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

      Обычные аннотации =)
      Есть видео на канале об этом

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

    именно в 3.9 улучшили типизацию, а не в 3.10

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

      Примеры брал из документации 3.10
      docs.python.org/3/whatsnew/3.10.html#new-features-related-to-type-hints

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

    Вот почему я люблю C++. Он уже идеален, быстр и удобен. Пишешь, и не надо учить новые фишки.

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

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

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

      @@zproger Все языки хороши для своего. C++ хорош для требовательных приложений и низкоуровневом программировании (соглашусь, для большинства новичков он может показаться невыносимо сложным, но это оправдано). Python в свою очередь полезен в быстром написании приложений, где уровень абстракции не очень то и важен: веб, искусственный интеллект, интерфейс

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

    Очень грязные примеры, непрофессионально

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

      Спасибо за комментарий.
      Что по вашему мнению можно улучшить?

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

      @@zproger более живые примеры, без x, y и некрасивого кода. Более понятное, размеренное объяснение. Хороший пример - канал "Диджитализируй!".