Типизированный Python для профессиональной разработки [Алексей Голобурдин] (pdf) читать постранично

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

RESCUER

Типизированный Python для
профессиональной разработки
Алексей Голобурдин,
команда Диджитализируй!
обложка — Васильев Никита, nikita.vasiliev@math.msu.ru
Цель этой книги — помочь тебе научиться писать более красивые, надёжные и легко
сопровождаемые программы на Python. То, о чём мы здесь будем говорить, это не
начальный уровень владения языком, предполагается, что ты уже минимально
умеешь программировать, но хочешь научиться делать это лучше.
И это — отличная цель, к которой мы вместе будем двигаться на протяжении
ближайших часов!
Этот материал есть также в видео формате на моём YouTube — «Диджитализируй!».
Также обращаю внимание, что на момент написания этих строк готовится
перезапуск моего авторского курса «Основы компьютерных и веб-технологий на
Python» course01.to.digital, запуск планируется в июне 2022, если ты читаешь этот
материал позже, то вполне вероятно, что на курс уже снова можно записаться.
Итак!
Часто в учебниках и курсах по Python не уделяют должного внимания типизации и
некоторым структурам, в то время как они очень важны и могут значительно, просто
драматически улучшить твой код.
В ревью кода начинающих разработчиков часто видны результаты того, что в
учебных материалах не уделяется отдельное внимание вопросам типизации. В коде
не используются подсказки типов, используются неправильно, не лучшим образом
выбираются типы для разных данных в приложении и так далее. Качество
программы и её надёжность страдают — а это гораздо более важные параметры,
чем многие поначалу думают. Поначалу кажется, что я написал программу, она в
моих идеальных условиях работает и этого достаточно. Но нет, этого недостаточно.
Наличие функциональности это одно, а надёжность этой функциональности и
качество реализации этой функциональности это совсем другое. Наличие
функциональности это когда вы видите обувь и думаете — о, отлично, можно её

надеть и пойти в ней куда-то. А надёжность и качество реализации этой
функциональности это про то, что у вас не треснет подошва где-то на улице, в обувь
не будет попадать вода, обувь не будет натирать вам ноги, она не потеряет быстро
приличный вид, а также это про то, что обувь легка в эксплуатации, её можно легко
протереть, её можно ремонтировать и многое другое.
То, что мы написали программу и она имеет функциональность — это вовсе не
означает, что программа действительно хороша. В этой небольшой книге мы
поговорим о том, как разрабатывать, думая не только о функциональности, но и о
качестве и надёжности её реализации.
Мы поговорим о типизации в Python, поговорим о нескольких структурах и
встроенных типах:
NamedTuple,
dataclass,
TypedDict,
Enum,
Literal,
Union, Optional,
Iterable, Sequence,
Callable,
TypeVar и др.

Напишем приложение погоды, используя эти типы и поясняя по ходу некоторые
архитектурные моменты выбора того или иного подхода. Смотри видео версию этой
книги на YouTube и читай обязательно до конца.
Обещаю, что после проработки этого материала твой код больше никогда не будет
прежним. Буквально — драматическое улучшение кода гарантировано. Как пишут в
англоязычных книжках, dramatic improvement!
Поднимаемые вопросы актуальны, кстати, не только для Python, говорить мы будем
о нём, но аналогичные подходы применимы и к PHP, TypeScript и тд. Подходы к
написанию качественного ПО схожи для разных языков программирования,
выступающих просто инструментом реализации задумок автора кода.
Говорить мы здесь будем о версии Python 3.10. В предыдущих версиях Python
некоторые аспекты работают чуть иначе (нужно импортировать некоторые типы из
typing, например), но это не столь критично.

Опчки! Время подписаться!
YouTube / Telegram / VK

Начать нужно с разговора о самой типизации и о том, почему этому нужно уделять
тщательное внимание. Итак, подсказки типов Python или, что то же самое, type
hinting.

Type hinting
Что делает любая программа? Оперирует данными, то есть какие-то данные
принимает на вход, какие-то данные отдаёт на выход, а внутри данные как-то
трансформирует, обрабатывает и передаёт в разные функции, классы, модули и так
далее. И весь вопрос в том, в каком виде и формате программа внутри себя эти
данные передаёт! То есть — какие типы данных для этого используются. Часто одни
и те же данные можно передавать внутри приложения строкой, списком, кортежем,
словарём и массой других способов.
Как все мы знаем, Python это язык с динамической типизацией. Что означает
динамическая типизация? Что тип переменной определяется не в момент создания
переменной, а в момент присваивания значения этой переменной. Мы можем
сохранить в переменную строку, потом число, потом список, и это будет работать.
Фактически интерпретатор Python сам выводит типы данных и мы их нигде их не
указываем, вообще не думаем об этом — просто используем то, что нам нужно в
текущий момент.

user = "Пётр"
user = 120560
user = {
"name": "Пётр",
"username": "petr@email.com",
"id": 120560
}
user =