Типизированный Python для профессиональной разработки - теория и практика [2022]
HTML-код
- Опубликовано: 8 июн 2024
- Книга в PDF t.me/t0digital/151
Веб-версия to.digital/typed-python/
Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Цель этого материала - помочь тебе научиться писать более красивые, надёжные и легко сопровождаемые программы на Python. То, о чём мы здесь будем говорить, это не начальный уровень владения языком, предполагается, что ты уже минимально умеешь программировать, но хочешь научиться делать это лучше. Будем учиться писать более надёжные, качественные и легко сопровождаемые программы, используя типизацию в Python.
Поговорим о том, почему вопросы типизации очень важны и как они влияют на программу, разберём все основные структуры для использования в типизации, напишем программу, которая находит наши GPS координаты и показывает текущую погоду по ним. В ходе разработки программы затронем и обсудим много смежных тем - архитектура кода, построение слоёв логики в приложении и др.
Разберём эти и другие типы:
- NamedTuple
- dataclass
- TypedDict
- Enum
- Literal
- Union, Optional
- Iterable, Sequence
- Callable
- TypeVar и др.
Код - github.com/alexey-goloburdin/...
Сказать спасибо денежкой за работу и материал можно здесь:
boosty.to/digitalize.team
0:00 Постановка целей
5:10 Type hinting - зачем?
7:55 Раннее выявление ошибок
22:24 Читаемость и поддерживаемость кода
25:34 Помощь IDE при разработке
26:30 Zen of Python
28:20 Интерпретатор не проверяет подсказки типов
31:19 Пишем программу погоды
36:56 Накидываем структуру приложения
42:01 Пишем каркас приложения
48:16 NamedTuple - именованный кортеж
52:02 Обычный словарь dict
56:09 Literal
58:04 TypedDict
1:00:37 Dataclass
1:13:20 Alias для типа
1:16:25 Enum
1:27:35 Реализация - получение GPS координат
1:40:40 Реализация - получение погоды с API OpenWeather
1:50:36 Реализация - принтер погоды
1:51:55 Обработка исключений
1:53:19 Проверяем работу приложения
1:43:07 Использование интерфейсов или абстрактных классов
2:07:39 Анализ получившейся архитектуры кода
2:15:29 Статический анализатор mypy
2:18:15 Optional
2:19:18 Контейнеры - Iterable, Sequence, Mapping и др.
2:27:14 О типизации кортежей
2:28:57 Дженерики
2:32:05 Callable
2:33:35 Stub файлы и работа с нетипизированными библиотеками
2:36:42 Подсказки типов нужны только в функциях?
2:39:47 Резюме
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...
Мой курс «Хардкорная веб-разработка» - course.to.digital
Вжух!
Только недавно видел ваш ролик по pydantic, решил воспользоваться этим модулем. После удачной практики задался вопросом - "А как выглядит типизация в профессиональном деле?", и тут мне приходит уведомление об этом ролике. Чудеса какие-то! Спасибо большое!
добро пожаловать в мир контекстной рекламы
@@als-creator Хаха)
@@als-creator Они пока ещё не научились читать мысли, пока что не выраженные каким либо способом в реальности, если автор комментария, конечно же, ничего не произносил в слух и не забивал в поисковиках. Так что это просто совпадение. Но не на долго.
@@herrkrake8106 достаточно того, что он подумал. Слышали: " мысль витает в воздухе"
Выложено 32 секунды назад, отбрасываю все дела и начинаю смотреть :)
Тема актуальная!
Йеее:)
Согласен как никогда)
Алексей, спасибо Вам большое за Ваш огромный труд и вклад в наше образование в качестве разработчиков! :)
И да, тема с TDD очень интересна, с нетерпением буду ждать. Как и любого другого видео от Вас!
1:07:40 - 1:07:44 Алексей, спасибо вам большое, что делитесь также и своей житейской мудростью! Хоть сейчас бери цитату и в рамку её вставляй, чтобы сохранилась для потомков.
xD
Это титанический труд, спасибо вам огромное, Алексей!
В последнее время очень много ходит разговоров про инженерную культуру и тд в IT и инженерии в целом. Так вот, вы тот человек, один из немногих, к слову, на русском языке, кто это инженерную культуру развивает в нашем сообществе и прививает её.
Спасибо! Буду продолжать!
Редко смотрю видео по питону, обычно очевидное пережевывают, но у Вас почти всегда находится какая-то вроде-бы мелочь, но которая действительно удобна и что-то упрощает.
Благодарю за комплексный подход, щепетильность и "ламповость" повествования :)
Для себя нашел действительно удобным чаще наследоваться от Exception.
Раньше не особо видел в этом смысл, потому код полон кастомных ValueError и иногда TypeError.
Спасибо! Рад, что полезно:)
С++ : вы придумали языки программирования без строгой типизации для упрощения написания кода…но куда вас это привело? Снова ко мне…
отсутствие строгой типизации это лень разрабов компилятора, ни один реальный язык программирования на котором предполагается писать какой-то комплексный софт не может быть неявно-динамически типизирован.
@@gamerzero6085 во первых с чего это лень? Отсутствие типизации это как раз проблемы разработчикам компилятора. При строгой типизации компилятор сделать проще.
Во вторых Пайтон интерпретируемый язык.
В третьих Пайтон используется для создания скриптов, научных расчётов, обработки данных - там типизация нафиг не нужна и очень вредна.
Если ли в этих ваших крестах type casting по свойствам объектов искаропки, кек?))0)
@@user-gu1vo9hm9x то, что он интерпретируемый не мешает его сделать строго типизированным же?
@@viktor_borodin конечно не мешает.
Сделать можно.
Вопрос лишь в том зачем это нужно?
Привет :) ты очень приятный и хороший человек. Глаз и сердце радуется когда смотрю твои видео. Спасибо!
Спасибооо!
Огромное спасибо за уроки! За грамотную и добрую речь! За отсутствие вульгарных слов.
Вот это я понимаю контент, спасибо, обязательно посмотрю!
Алексей, ваша работа выше всяких похвал! Здесь не только великолепная подача, но и настоящая страсть к любимому делу. Спасибо вам огромное!
Углублённо, по полочкам! Огромнейшее спасибо! 🙏
Особая благодарность за версию в виде книги! Так удобно изучать материал! Благодарю!
по видео нагляднее
Спасибо, Алексей!
Надеюсь и потом будешь радовать нас, подписчиков, качественными уроками
Алексей, было бы очень круто увидеть подобное подробное видео по тестированию приложений. Особенно о том, как внедрять тесты в готовый проект (интересна даже не сама реализация, а скорее подход, чтобы понимать за что браться и как с этим работать) + TDD.
PS: Спасибо за это видео и книгу, очень подробно и по делу!
Да поддерживаю! Очень нужная тема
Чё за книга?
@@Python_in_UA описание открыть не судьба?
@@gmzzv та вже знайшов. Дякую за натяк.
Плюсую!)
Очень интересно будет посмотреть большое видео где вы будете рассказывать про тесты и попробуете на небольшой программе разные практики тестов показать, буду с нетерпением ждать такой от вас )
Спасибо за видео. Картинка, звук и содержание - все на высшем уровне.
Отдельное спасибо за то, что реализовал приложение и показал ход мыслей.
Алексей, афигенное видео! Спасибо за информацию! Полезно не только для молодых, но и для людей со стажем!
Отличное видео! Спасибо вам огромное за ваш труд. Ваш канал - один из самых лучших русскоязычных ресурсов по питону. Пожалуйста, продолжайте вашу деятельность)
Здорово, что вы делитесь такими информативными и практичными примерами проектов!
Отдельно хочется похвалить за динамику ролика, за монтаж, смену ракурсов, ням ням
Спасибо:)!
@@t0digital а я как раз этой фишки не могу понять. Вроде автор со зрителем беседует, а при смене ракурса куда-то в сторону?
Настолько понятно и настолько круто. Огромное спасибо за труд!
Алексей, благодарю за такой хороший объемный ролик, много нового удалось узнать!
Все мы когда-то учились читать и писать. Была у нас замечательная книга - "Азбука".
Данное видео от Алексея является "Азбукой" для многих разработчиков. Огромная благодарность ему за это.
Огонь! Спасибо!
Видео по тестированию конечно интересно.
Огромное спасибо за труд, Алексей. Очень полезно и чрезвычайно приятно смотреть ваши видео.
Спасибо!
Все было очень круто, максимум информации в единицу времени. спасибо за твой труд!
Очень полезно, Алексей! как раз сейчас пишу пет-проект, писал простые хинты типа dict, list, теперь буду писать более подробно)
Картинка и звук супер!
Интересно было бы про docstrings послушать, насколько они нужны и важны, ну и как правильнее их писать
Круто , сразу видно качественный контент
С удовольствием просмотрел видео до конца, ежедневно по 30-40 минут смотрел в течение нескольких дней. Видео просто супер! Много нового для себя открыл. Спасибо за труд!
Спасибо! Рад, что полезно
Только прочитал вступление книги - начало уже много общающее! В любом случае благодарю Вас за Ваши труды! Будем посмотреть!
Очень круто, спасибо тебе большое! А планируются ли видео про паттерны проектирования на Python?
Отличное видео. Голову на место ставит, полезные знания загружает. Спасибо, что помогаешь людям прокачиваться.
Крутой материал, как всегда без воды и доходчиво! Спасибо большущее!
Отличная лекция, почти 3 часа на одном дыхании, большое спасибо
Спасибо вам огромное! Дай Бог вам здоровья!
насколько долго настолько же приятно. спасибо!
Спасибооо!
Алексей, спасибо за отлично подготовленный материал!
Отличный материал, спасибо за вашу работу!
Большое спасибо за вашу работу!
Написал свой маленький петпроект и вот решил, что здорово было бы добавить типизацию , строки документации, правильную обработку исключений, и тесты. Здорово что весь материал уже есть на канале. По ощущениям работы предстоит сделать больше, чем было сделано до этого.
Ещё не смотрел, но это точно будет бомба. Спасибо Алексею за его труд
Так хорошо, что второй раз пересмотрел до конца
Алексей, огромное спасибо за отличный материал. Мне, как начинающему разработчику, крайне полезно.
Это просто нечто. Огромное спасибо за ваш труд!
Спасибо! Очень много узнал из этого видео! Еще плюс и книга 😉
Просто лучшее объяснение из всех что я видел. Продолжайте в том же духе. Успехов Вам
Нереально годно. То что я годами узнавал на практике в одном видео, даже как-то обидно немного, но не надо держаться за прошлое как говорится)
Спасибо:)!
Круто-круто. Один из самых полезных видосов, которые я видел когда-либо. Спасибо!
Вопрос:
А мы могли бы красивый вывод погоды реализовать в методе __str__ класса Weather?
Космическое спасибо за такой ролик, то что нужно!!
Отличное видео, огромное спасибо!
Очень заходит такой формат с разработкой по ходу. Важны именно комментарии от специалиста в языке, какие именно решения применяете именно вы. Сам обучаю молодых на другом языке и стараюсь предложить им свое виденье, которое они смогут поменять в будущем, когда станут спецами.
Большое спасибо!
Спасибо большое за труд. Видео действительно поменяла взгляд на написание кода.
Написать бы также приложение от начала до конца с TDD - реально круто было бы :) Буду ждать такое видео!
Спасибо Вам за интересный контент!
На самом деле, сам не верил что смогу досмотреть до конца! Но оказалось что твоя манера подачи материала, очень даже интересно слушать 🙂.
Поэтому огромное спасибо за это! 👍
Вот это уровень!) Спасибо большое🤝
Алексей спасибо вам! Вы нас развиваете 🙌
Замечательно! Очень приятно слушать!
(качество звука огонь)
Спасибо!
Самое полезное видео за последние пол года! Я наконец-то понял как писать слабосвязанный код, который можно расширять в любую сторону. Как описывать и валидировать типы (с валидацией надо разобраться, pydantic изучить и похорошему с тестированием). Это просто божественно! Благодарю за видео! Жду новых таких видео с практическим написанием правильного кода, а не отрывков из обрывков как во всех других видео с ютуба.
Больше спасибо за проделанную работу!
Очень хочется посмотреть на то, как реализовывать функционал на основе TDD ! Особенно на этапе интеграционных тестов!
В ходе просмотра родилась следующая тема - планирование приложения до написания кода. Было бы интересно узнать практикуете ли такое, насколько подробно и с какими подходами и инструментами. Частично ее раскрыли в ходе записи вашей встречи по реальному проекту. Но может есть чего добавить и сконцентрироваться на этом в видео.
Да, было бы интересно послушать.
Сам я на данный момент практикую написание некоего подобия технического задания (начинаю в виде заметки в телефоне, довожу до ума на ПК), схему данных, БД и алгоритмы выкладываю в диаграммы. Может, это кому-то покажется нудным, но помогает мыслительному аппарату видеть всё с высоты птичьего полета, оптимизировать и править свои фантазии ещё до создания прототипа и MVP. :)
Хочется послушать Алексея в этом вопросе, если ещё нет такого материала.
🤝🏻 Спасибо большое за материал, чуть лучше стал понимать некоторые вещи. 👍🏼
Спасибо большое. Сначала увидел книгу, даже не знал, что есть и видео по этой теме
ДВА ЧАСА СОРОК ОДНА МИНУТА И ДВЕ МАТЬ ЕЁ СЕКУНДЫ. АЛЕКСЕЙ, НИЗКИЙ ПОКЛОН ВАМ ЗА ТАКОЙ МАТЕРИАЛ!
Спасибо за работу. Представляю сколько труда было вложено в это видео))
вам спасибо за обьяснения, смотрел 3 дня) перематывая моментами, записывая а иногда засыпая)) чтобы потом на след день снова перемотать видео назад и еще раз глянуть что "посмотрел" пока спал)
очень классно когда можешь заглянуть за шторку и посмотреть как работает и мыслит другой программист, при этом он еще и обьясняет почему так лучше и какие есть возможные варианты развития, и вообше другие варианты реализации
Алексей, спасибо большое, очень годный материал, узнал много интересного.
Спасибо за прекрасное видео, я еще много не знаю и очень хочу стать профессиональным разроботчиком, благодарю за труды!!! Теперь надо найти еще что-то с чем можно разобраться и чему нужно научиться :)
Жму (руку) в ответ! Волшебное видео, извлек для себя много нового! Благодарю и жду новых выпусков!
Спасибо большое за разнообразную информацию. Очень круто что освещаете темы, напрямую не связанные с темой ролика, но тоже важные, типа запуска скриптов из консоли, ТДД и т.д. По поводу ТДД тоже очень бы хотелось ролик. Сам пришел на проект где была старая версия системы и новая, которая активно разрабатывалась, новая была уже с аннотациями типов, пайдантиком и датаклассами. От себя скажу что реально работать без всяких подсказок, без явных сущностей завернутых в типы или енамы, в разы тяжелее чем работать с этим добром, особенно когда еще не особо понимаешь что в этой части кода происходит.
Посмотрел до конца) спасибо
Благодарю за превосходный материал. Посмотрели всем коллективом! :)
Спасибо:)!
Шикарно, как и всегда
Это лучшее из всего что я видел по пайтону! Сильно упростит жизнь новичкам
Большое спасибо, очень интересное и полезное видео! С нетерпением жду следующих выпусков :)
Спасибо, рад, что полезно!
Спасибо за видео и особенно за книгу. Очень удобно, когда они параллельны. И да, очень бы хотелось по TDD материал.
Спасибо огромное, отличный материал!:3
Отличное видео, спасибо за старания!!!! Жду видосов по разбору книги - Чистый Python.
Спасибо за видео) Очень годный и полезный контент))
Спасибооо!
спасибо огромное за такое видео)
Прекрасный материал, спасибо!
Этот шедевр однозначно заслуживает моей хоть и субъективной, но очень высокой оценки! А так же лайка и колокольчика. Подписка уже была :)
вообще годное видео! супер спасибо!
В процессе просмотра, спасибо!
плюсую за TDD
Офигенный материал, мотивирует делать правильно. Побежал реализовывать у себя. Огромное спасибо Вам, Алексей, за Ваш труд!
Спасибо!
Я досмотрел. А как не досмотреть такой шикарный материал? Разбирался конечно недели две потом. Но это уже совсем другая история. Алексей даешь еще подобный качественный контент!
Спасибо!
Гениальный ролик спасибо вам большое , просто бесценная информация .
От меня только благодарность и много плюсов)))
Все интересно, пошаговые инструкции, интерес держит до конца просмотра!!!
Удачи и больше интересного в доступном объеме для нас)))
Спасибо, Александр!
Спасибо за классный туториал!
Очень крутое видео, спасибо)
Доступно, полезно, очень круто. Всем начинающим и не только обязательно к просмотру
Про тесты интересно. Вообще про все что с ними связано. Сделай по возможности на эту тему обзор.
Просто нереальный материал, спасибо большое. Сижу в два часа ночи и оторваться не могу, а ещё больше часа смотреть! Мало того что очень интересная тема, хорошо изложенная, так автор ещё и объясняет вещи которые вообще к теме не относятся, но вопросы про которые напрашиваются. Огромное спасибо за столь крутую работу
Спасибооо! Рад, что полезно!
Очень ценное видео! Спасибо огромное!
Спасибо, Алексей
Спасибо за видео! Также как и Вы, перешел из PHP в Python и весьма этому рад. Хотя за плечами > 7 лет работы, из видео почерпнул для себя кое-что интересное.
Алексей, как всегда огонь!!!