Новые фишки 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?
2:30 - у функции isinstance ещё с 3.6 второй аргумент был говорящим именем class_or_tuple, так что новшества тут нет, функция всегда могла сравнивать тип объекта с множеством классов, но для этого их нужно было в явном виде передать в виде кортежа.
8:25 - метод возвращает не количество битов, а количество значащих единиц в бинарной записи, для подсчета количества бит как был, так и остается метод bit_length.
9:04 - да всегда можно было открыть несколько контекстных менеджеров, собственно именно так асинхронный контекст семафоров и открывался, его ставили вызовом другого асинхронного контекста, который требует ограничения количества открытий единовременно, сейчас просто добавили синтаксис со скобками для форматирования и не более того.
Честно говоря, поражен, что нет упоминания одной из самых главной фичей 3.10 - Pattern Matching.
О Pattern Matching есть отдельное видео на канале, так как не хотел до 30 минут это видео расширять:
ruclips.net/video/jIFeDDf69Uk/видео.html
Спасибо, видео супер, очень интересно и познавательно=)
Спасибо
Спасибо за информацию. То что нужно !
Благодарю!
про 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)
Спасибо
Спасибо, так понятнее. KW_ONLY=Используй только именованные аргументы чтобы не вводить в заблуждение коллег.
Контент информативный и полезный, спасибо!
Благодарю!
Интересно
Полезная инфа, смотрю не только этот канал, на другом API парсинг надоел)
Не подскажешь? Писал оптимизацию через all и заметил, что не работает правильно.
Решение - писать метод через list comprehension. И потом сравнивать, но странно, что built-in глючит😟
В python 3.10 также добавили конструкцию match/case это аналог case of x,используется для упрощения работы и уменьшения if/else
Это да, об этом было видео на канале:
ruclips.net/video/jIFeDDf69Uk/видео.html
Спасибо за видео, интересный контент
Благодарю!
Контент что надо, особенно про тайп элиасы
Круто, что канал развивается и все такое..
Но когда видосы по асинхронщине?
По мере возможностей делаю, видео будут это точно =)
В пайтоне была проблема, что когда у вас цикл, то при каждой итерации проверялся тип используемых переменных. Засчет этого тормозилось. Народ обманывал систему подключая модуль math, который написан на плюсах. Сейчас с появлением анотации вы даете языку подсказку, он уже не перепроверяет, а использует подсказку, поэтому происходит ускорение.
как говорится, в питоне нельзя, но если очень хочется, то можно)
Покажи теперь как на новой версии python'a распоковать exe файл
Пока что никак :)
Если будет способ, сделаю видео
@@zproger есть такой способ. Pycdc. Некоторые опкоды в него не завезли, но большинство програм он декомпильнет.
Вот за это спасибо, посмотрю обязательно
@@zproger Не будет ничего лучше обычной иды, нет?) Ida Pro is a better way for .exe, ain't it? Ну, получим псевдокод, по которому уже можно всё посмотреть максимально прозрачно
Компилируемые языки легко идой разобрать, а питон очень трудно, потому что мы там увидим код рантайма и чтение байт-кода) В этом плане питон сложнее компилируемых языков реверсить.
Почему у тебя так мало подписчиков?, такой контент должен оцениваться в 3000000 подписчиков минимум
Надеемся что скоро это количество подписчиков будет =)
Спасибо за поддержку
Ребят,сейчас изучаю пайтон на уровне джуниор,подскажите эта тематика для какого уровня?)
Здарова... Спасибо за информацию
=) Пожалуйста
3:09 видео ВЫ подсказках... 3:16 Добавили аргумент КЫ декоратору... 4:04 Сравнить СЫ результатом программы...
Почему такое произношение предлогов? Это программа обработки речи так настроена?
Возможно, буду смотреть :)
А ещё вероятно что это я так произношу. Так как видео идет 12 минут, но это уже готовое видео, а с фейлами оно все 40 минут, поэтому когда 40 минут озвучиваешь, становится очень сложно четко произносить слова, поэтому может быть и такое)
А как ты сделал чтобы у тебя символы "->" преобразовались в стрелку?
Это IDE форматирует =)
@@zproger я нашел эту настройку:
Settings -> Editor -> Font
И там активировать пункт "Enable ligatures"
Именно эта настройка включает такое форматирование.
Чегоооо? 2:32 Дядя, isinstance вторым аргументом может принимать кортеж isinstance(2.5, (int, float)) -> True. Ну лайк всё равно ставим
Спасибо, как-то и не заметил что он может кортеж принимать.
Трюк с with очень удобный!
=)
в 3.11 тоже много чего оптимизировали, а isinstance может принимать tuple[type] 😉
Благодарю! До 3.11 ещё доберемся, и когда-то до 4.0 =)
😍
=)
А покажи как на питон 3.10 забить гвоздь в стену с помощью шуруповерта
Привет, полезное видео!)
Только.. isinstance и до этого можно было сравнивать по нескольким типам:
a = 1
isinstance(a, (int, str, list, float))
:D
Почему все "в", "к" и "с" заменены по тексту на "вы", "кы" и "сы" соответственно?
Я просто делаю задержку на этих буквах, зачем мне специально так говорить)
@@zproger а зачем вы так специально говорите?
А если я переустановлю питон на 3.10, то мне придется все мои проги с нуля переписывать?
Не, всё остается также
@@zproger а, спасибо, а то друг чет ноет. Говорит, что не будет обновляться, чтобы все не переписывать
:/
А почему канал называется Z Proger?
Это вопрос в стиле "Почему apple называется apple".
Не знаю, просто так назвал, это не связано с политикой и нику 3 года уже.
@@zproger а ну тогда можно попробывать подписаться 👍 А то подумал, может этот канал ник сменил 😬
Не, я никак не связан с политикой
Ох этот модный питон... Я боюсь представить что будет, если Rust lang однажды обойдёт и заменит Python... Мне уже бы хватило на Rust lang получить фреймворк для работы с нейросетями и вот тогда сверх ИИ был бы реальным. Я очень редко ошибаюсь в IT-сфере. Ещё на втором курсе всем говорил, что пишите всё на 2-ух популярных языках - JS и Python. И так же я могу сказать и сегодня, но только новичкам, а тот кто уже на 4-ом курсе - учите Rust lang и сможете реализовать свою децентрализованную mTLS БД (документно-объектную) для своих проектов нейросетей(аналитики) и красивых интерфейсов Python(back) - JS(front).
Питонистам будет тяжко писать на расте, забросят они его быстро
Rust крутой, юзаю его как 2й язык
@@zproger и даже не было борьбы с борров чекером?:)
@@zproger но то, что он крутой это точно. Особенно макросы и его производительность с безопасностью при высокоуровневости языка
Были конечно) Но спустя время понял что к чему.
После питона достаточно легко перейти на раст, все либы идентичные и подход к написанию кода очень похожий.
Что за шрифт в терминале?
Стандартный шрифт ZorinOS
@@zproger Из ответа так не ясно что это за шрифт, но и на том спасибо
Дополнение: судя по скриншоту дефолтных настроек шрифта из ZorinOS 16 это "JetBrains Mono Regular"
Что за линукс дистрибутив?
Zorin OS
изинстанс можно передать кортеж из типов
Да, ошибочка вышла, спасибо
Спасибо за полезную информацию! Только маленькая просьба. Пожалуйста, не надо произносить "с", "в" и "к" как "сы" и "вы" и "кы" 🙏
Всё что скомпилировано в exe, остаётся в exe 😬
:)
Что за тема для PyCharm?
Github Dark
@@zproger спасибо
о каких экзешниках речь?
которые идут на выходе pyinstaller
@@zproger Окей, а можно для линукс сделать сборку, работая на винде?
С 2:14 до 3:05 ничегошеньки непонятно
Обычные аннотации =)
Есть видео на канале об этом
именно в 3.9 улучшили типизацию, а не в 3.10
Примеры брал из документации 3.10
docs.python.org/3/whatsnew/3.10.html#new-features-related-to-type-hints
Вот почему я люблю C++. Он уже идеален, быстр и удобен. Пишешь, и не надо учить новые фишки.
Да, но он слишком сложный для новичка и заставляет копать слишком глубоко, даже для создания элементарной программы. Но тут кому как, так то все языки хороши
@@zproger Все языки хороши для своего. C++ хорош для требовательных приложений и низкоуровневом программировании (соглашусь, для большинства новичков он может показаться невыносимо сложным, но это оправдано). Python в свою очередь полезен в быстром написании приложений, где уровень абстракции не очень то и важен: веб, искусственный интеллект, интерфейс
Очень грязные примеры, непрофессионально
Спасибо за комментарий.
Что по вашему мнению можно улучшить?
@@zproger более живые примеры, без x, y и некрасивого кода. Более понятное, размеренное объяснение. Хороший пример - канал "Диджитализируй!".