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

  Рет қаралды 34,141

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

⭐ Курс ООП и Приват канал: 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 Жыл бұрын
2:30 - у функции isinstance ещё с 3.6 второй аргумент был говорящим именем class_or_tuple, так что новшества тут нет, функция всегда могла сравнивать тип объекта с множеством классов, но для этого их нужно было в явном виде передать в виде кортежа. 8:25 - метод возвращает не количество битов, а количество значащих единиц в бинарной записи, для подсчета количества бит как был, так и остается метод bit_length. 9:04 - да всегда можно было открыть несколько контекстных менеджеров, собственно именно так асинхронный контекст семафоров и открывался, его ставили вызовом другого асинхронного контекста, который требует ограничения количества открытий единовременно, сейчас просто добавили синтаксис со скобками для форматирования и не более того. Честно говоря, поражен, что нет упоминания одной из самых главной фичей 3.10 - Pattern Matching.
@zproger
@zproger Жыл бұрын
О Pattern Matching есть отдельное видео на канале, так как не хотел до 30 минут это видео расширять: kzfaq.info/get/bejne/oK92mKd1y5ydhZ8.html
@user-nl9dg6iw2t
@user-nl9dg6iw2t Жыл бұрын
Спасибо за информацию. То что нужно !
@zproger
@zproger Жыл бұрын
Благодарю!
@IvanIvanov-dh3sg
@IvanIvanov-dh3sg Жыл бұрын
Спасибо, видео супер, очень интересно и познавательно=)
@zproger
@zproger Жыл бұрын
Спасибо
@Sytyy00
@Sytyy00 Жыл бұрын
про 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=Используй только именованные аргументы чтобы не вводить в заблуждение коллег.
@darksniper407
@darksniper407 Жыл бұрын
Интересно Полезная инфа, смотрю не только этот канал, на другом API парсинг надоел) Не подскажешь? Писал оптимизацию через all и заметил, что не работает правильно. Решение - писать метод через list comprehension. И потом сравнивать, но странно, что built-in глючит😟
@pro100kot5
@pro100kot5 Жыл бұрын
Контент информативный и полезный, спасибо!
@zproger
@zproger Жыл бұрын
Благодарю!
@PythonDevelopment
@PythonDevelopment Жыл бұрын
Спасибо за видео, интересный контент
@zproger
@zproger Жыл бұрын
Благодарю!
@rokot
@rokot Жыл бұрын
В пайтоне была проблема, что когда у вас цикл, то при каждой итерации проверялся тип используемых переменных. Засчет этого тормозилось. Народ обманывал систему подключая модуль math, который написан на плюсах. Сейчас с появлением анотации вы даете языку подсказку, он уже не перепроверяет, а использует подсказку, поэтому происходит ускорение.
@smartbox2445e
@smartbox2445e Жыл бұрын
В python 3.10 также добавили конструкцию match/case это аналог case of x,используется для упрощения работы и уменьшения if/else
@zproger
@zproger Жыл бұрын
Это да, об этом было видео на канале: kzfaq.info/get/bejne/oK92mKd1y5ydhZ8.html
@qwa3r
@qwa3r Жыл бұрын
Почему у тебя так мало подписчиков?, такой контент должен оцениваться в 3000000 подписчиков минимум
@zproger
@zproger Жыл бұрын
Надеемся что скоро это количество подписчиков будет =) Спасибо за поддержку
@domochevsky4703
@domochevsky4703 Жыл бұрын
Контент что надо, особенно про тайп элиасы Круто, что канал развивается и все такое.. Но когда видосы по асинхронщине?
@zproger
@zproger Жыл бұрын
По мере возможностей делаю, видео будут это точно =)
@cs_dequeue
@cs_dequeue Жыл бұрын
как говорится, в питоне нельзя, но если очень хочется, то можно)
@pashamix
@pashamix Жыл бұрын
3:09 видео ВЫ подсказках... 3:16 Добавили аргумент КЫ декоратору... 4:04 Сравнить СЫ результатом программы... Почему такое произношение предлогов? Это программа обработки речи так настроена?
@zproger
@zproger Жыл бұрын
Возможно, буду смотреть :) А ещё вероятно что это я так произношу. Так как видео идет 12 минут, но это уже готовое видео, а с фейлами оно все 40 минут, поэтому когда 40 минут озвучиваешь, становится очень сложно четко произносить слова, поэтому может быть и такое)
@alexmoren1376
@alexmoren1376 Жыл бұрын
Ребят,сейчас изучаю пайтон на уровне джуниор,подскажите эта тематика для какого уровня?)
@ismailisabekov8424
@ismailisabekov8424 Жыл бұрын
Здарова... Спасибо за информацию
@zproger
@zproger Жыл бұрын
=) Пожалуйста
@kirill_monster
@kirill_monster Жыл бұрын
Покажи теперь как на новой версии python'a распоковать exe файл
@zproger
@zproger Жыл бұрын
Пока что никак :) Если будет способ, сделаю видео
@karas_warface
@karas_warface Жыл бұрын
@@zproger есть такой способ. Pycdc. Некоторые опкоды в него не завезли, но большинство програм он декомпильнет.
@zproger
@zproger Жыл бұрын
Вот за это спасибо, посмотрю обязательно
@firedragonkys
@firedragonkys Жыл бұрын
@@zproger Не будет ничего лучше обычной иды, нет?) Ida Pro is a better way for .exe, ain't it? Ну, получим псевдокод, по которому уже можно всё посмотреть максимально прозрачно
@zproger
@zproger Жыл бұрын
Компилируемые языки легко идой разобрать, а питон очень трудно, потому что мы там увидим код рантайма и чтение байт-кода) В этом плане питон сложнее компилируемых языков реверсить.
@predatel_rodini
@predatel_rodini Жыл бұрын
Чегоооо? 2:32 Дядя, isinstance вторым аргументом может принимать кортеж isinstance(2.5, (int, float)) -> True. Ну лайк всё равно ставим
@zproger
@zproger Жыл бұрын
Спасибо, как-то и не заметил что он может кортеж принимать.
@ArpeksMenethil
@ArpeksMenethil Жыл бұрын
А как ты сделал чтобы у тебя символы "->" преобразовались в стрелку?
@zproger
@zproger Жыл бұрын
Это IDE форматирует =)
@ArpeksMenethil
@ArpeksMenethil Жыл бұрын
@@zproger я нашел эту настройку: Settings -> Editor -> Font И там активировать пункт "Enable ligatures" Именно эта настройка включает такое форматирование.
@yuzu-dev
@yuzu-dev Жыл бұрын
Привет, полезное видео!) Только.. isinstance и до этого можно было сравнивать по нескольким типам: a = 1 isinstance(a, (int, str, list, float)) :D
@artembagachkov933
@artembagachkov933 Жыл бұрын
Трюк с with очень удобный!
@zproger
@zproger Жыл бұрын
=)
@howl3440
@howl3440 Жыл бұрын
в 3.11 тоже много чего оптимизировали, а isinstance может принимать tuple[type] 😉
@zproger
@zproger Жыл бұрын
Благодарю! До 3.11 ещё доберемся, и когда-то до 4.0 =)
@AlexanderDev
@AlexanderDev Жыл бұрын
Спасибо за полезную информацию! Только маленькая просьба. Пожалуйста, не надо произносить "с", "в" и "к" как "сы" и "вы" и "кы" 🙏
@aceinetcodesgood
@aceinetcodesgood Жыл бұрын
А покажи как на питон 3.10 забить гвоздь в стену с помощью шуруповерта
@sushkahacker9762
@sushkahacker9762 Жыл бұрын
А если я переустановлю питон на 3.10, то мне придется все мои проги с нуля переписывать?
@zproger
@zproger Жыл бұрын
Не, всё остается также
@sushkahacker9762
@sushkahacker9762 Жыл бұрын
@@zproger а, спасибо, а то друг чет ноет. Говорит, что не будет обновляться, чтобы все не переписывать :/
@ssmodest
@ssmodest Жыл бұрын
Почему все "в", "к" и "с" заменены по тексту на "вы", "кы" и "сы" соответственно?
@zproger
@zproger Жыл бұрын
Я просто делаю задержку на этих буквах, зачем мне специально так говорить)
@ssmodest
@ssmodest Жыл бұрын
@@zproger а зачем вы так специально говорите?
@rKvinty
@rKvinty Жыл бұрын
А почему канал называется Z Proger?
@zproger
@zproger Жыл бұрын
Это вопрос в стиле "Почему apple называется apple". Не знаю, просто так назвал, это не связано с политикой и нику 3 года уже.
@rKvinty
@rKvinty Жыл бұрын
@@zproger а ну тогда можно попробывать подписаться 👍 А то подумал, может этот канал ник сменил 😬
@zproger
@zproger Жыл бұрын
Не, я никак не связан с политикой
@maxsalov9521
@maxsalov9521 Жыл бұрын
Ох этот модный питон... Я боюсь представить что будет, если 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 Жыл бұрын
Были конечно) Но спустя время понял что к чему. После питона достаточно легко перейти на раст, все либы идентичные и подход к написанию кода очень похожий.
@markkogan6551
@markkogan6551 Жыл бұрын
😍
@zproger
@zproger Жыл бұрын
=)
@MEZHGANO
@MEZHGANO Жыл бұрын
Что за шрифт в терминале?
@zproger
@zproger Жыл бұрын
Стандартный шрифт ZorinOS
@MEZHGANO
@MEZHGANO Жыл бұрын
@@zproger Из ответа так не ясно что это за шрифт, но и на том спасибо
@MEZHGANO
@MEZHGANO Жыл бұрын
Дополнение: судя по скриншоту дефолтных настроек шрифта из ZorinOS 16 это "JetBrains Mono Regular"
@user-ih7wb9qn4v
@user-ih7wb9qn4v Жыл бұрын
Что за линукс дистрибутив?
@zproger
@zproger Жыл бұрын
Zorin OS
@non5309
@non5309 Жыл бұрын
изинстанс можно передать кортеж из типов
@zproger
@zproger Жыл бұрын
Да, ошибочка вышла, спасибо
@predatel_rodini
@predatel_rodini Жыл бұрын
Всё что скомпилировано в exe, остаётся в exe 😬
@zproger
@zproger Жыл бұрын
:)
@alexanderx2018
@alexanderx2018 Жыл бұрын
Что за тема для PyCharm?
@zproger
@zproger Жыл бұрын
Github Dark
@alexanderx2018
@alexanderx2018 Жыл бұрын
@@zproger спасибо
@bspumo3830
@bspumo3830 Жыл бұрын
С 2:14 до 3:05 ничегошеньки непонятно
@zproger
@zproger Жыл бұрын
Обычные аннотации =) Есть видео на канале об этом
@Ivan_Balakirev
@Ivan_Balakirev Жыл бұрын
о каких экзешниках речь?
@zproger
@zproger Жыл бұрын
которые идут на выходе pyinstaller
@Ivan_Balakirev
@Ivan_Balakirev Жыл бұрын
@@zproger Окей, а можно для линукс сделать сборку, работая на винде?
@youngtitanium6418
@youngtitanium6418 Жыл бұрын
именно в 3.9 улучшили типизацию, а не в 3.10
@zproger
@zproger Жыл бұрын
Примеры брал из документации 3.10 docs.python.org/3/whatsnew/3.10.html#new-features-related-to-type-hints
@vuitlik5449
@vuitlik5449 Жыл бұрын
Вот почему я люблю C++. Он уже идеален, быстр и удобен. Пишешь, и не надо учить новые фишки.
@zproger
@zproger Жыл бұрын
Да, но он слишком сложный для новичка и заставляет копать слишком глубоко, даже для создания элементарной программы. Но тут кому как, так то все языки хороши
@vuitlik5449
@vuitlik5449 Жыл бұрын
@@zproger Все языки хороши для своего. C++ хорош для требовательных приложений и низкоуровневом программировании (соглашусь, для большинства новичков он может показаться невыносимо сложным, но это оправдано). Python в свою очередь полезен в быстром написании приложений, где уровень абстракции не очень то и важен: веб, искусственный интеллект, интерфейс
@fedorivanov8420
@fedorivanov8420 Жыл бұрын
Очень грязные примеры, непрофессионально
@zproger
@zproger Жыл бұрын
Спасибо за комментарий. Что по вашему мнению можно улучшить?
@fedorivanov8420
@fedorivanov8420 Жыл бұрын
@@zproger более живые примеры, без x, y и некрасивого кода. Более понятное, размеренное объяснение. Хороший пример - канал "Диджитализируй!".
Black Magic 🪄 by Petkit Pura Max #cat #cats
00:38
Sonyakisa8 TT
Рет қаралды 30 МЛН
Chips evolution !! 😔😔
00:23
Tibo InShape
Рет қаралды 42 МЛН
$10,000 Every Day You Survive In The Wilderness
26:44
MrBeast
Рет қаралды 53 МЛН
ELE QUEBROU A TAÇA DE FUTEBOL
00:45
Matheus Kriwat
Рет қаралды 25 МЛН
18 Фишек Python о которых мало кто говорит
14:13
Homemade ice cream. Eskimo ice cream and sundae. Basic recipes. Without molds and ice cream maker
9:00
Кулинарные практики
Рет қаралды 2,6 МЛН
Hide and seek from OPENAI? [KOSMO STORY]
4:49
Kosmo Story
Рет қаралды 2,7 МЛН
12 VS Code Extensions to INCREASE Productivity 2024
27:13
Devression
Рет қаралды 478 М.
Black Magic 🪄 by Petkit Pura Max #cat #cats
00:38
Sonyakisa8 TT
Рет қаралды 30 МЛН