Рецепты Python. Коллекция лучших техник программирования - Юн Цуй - E-Book

Рецепты Python. Коллекция лучших техник программирования E-Book

Юн Цуй

0,0

Beschreibung

В «Рецептах Python» используется простой, но эффективный метод освоения 63-х базовых навыков программирования на Python. Сначала формулируется вопрос, например «Как найти элементы в последовательности?» Затем приводится базовое решение на чистом понятном коде. Далее исследуются другие интересные подходы, такие как поиск подстрок или пользовательские классы. Перед переходом к следующему вопросу полученные навыки закрепляются с помощью решения задач. Автор рассматривает все языковые средства, необходимые для уверенного владения Python. По ходу знакомства с книгой вы изучите лучшие приемы написания питонического кода. В освоении каждого инструмента помогут конкретные рекомендации и рисунки. Многочисленные перекрестные ссылки указывают на возможность повторного использования рассматриваемых средств и концепций в различных контекстах.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 621

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Переводчики Е. Матвеев, Е. Матвеев, Е. Матвеев

Юн Цуй

Рецепты Python. Коллекция лучших техник программирования. — СПб.: Питер, 2024.

ISBN 978-5-4461-2156-4

© ООО Издательство "Питер", 2024

Оглавление

Предисловие
Благодарности
О книге
Для кого эта книга
Структура книги
О коде в книге
Форум LiveBook
Другие источники информации
Об авторе
Иллюстрация на обложке
От издательства
1. Разработка стратегии прагматичного обучения
1.1. О пользе прагматичного подхода
1.2. Что Python делает хорошо — или не хуже, чем другие языки
1.3. Чего Python не делает или что делает недостаточно хорошо
1.4. О чем вы узнаете из книги
Итоги
Часть 1. Использование встроенных моделей данных
2. Обработка и форматирование строк
2.1. Как использовать f-строки для интерполяции и форматирования
2.2. Как преобразовать строки для получения представляемых данных
2.3. Как объединять и разбивать строки
2.4. Какие возможности предоставляют регулярные выражения
2.5. Как использовать регулярные выражения для обработки текста
Итоги
3. Встроенные контейнеры данных
3.1. Как выбрать между списком и кортежем
3.2. Как сортировать списки сложных данных с помощью специализированных функций
3.3. Как построить облегченную модель данных с использованием именованных кортежей
3.4. Как обращаться к ключам, значениям и элементам словарей
3.5. Когда использовать словари и множества вместо списков и кортежей
3.6. Как использовать операции над множествами для проверки отношений между списками
Итоги
4. Работа с последовательностями
4.1. Как получать подпоследовательности и выполнять над ними операции с помощью срезов
4.2. Как использовать положительные и отрицательные индексы для получения элементов
4.3. Как искать элементы последовательности по критерию
4.4. Как распаковать последовательности
4.5. Когда следует выбирать другие модели данных, помимо списков и кортежей
Итоги
5. Итерируемые объекты и перебор
5.1. Как создавать распространенные контейнеры данных с использованием итерируемых объектов
5.2. Что такое включения списков, словарей и множеств
5.3. Как улучшить циклы for с использованием встроенных функций
5.4. Как использовать необязательные инструкции в циклах for и while
Итоги
Часть 2. Определение функций
6. Определение дружественных к пользователю функций
6.1. Как определить аргументы по умолчанию для упрощения вызова функций
6.2. Как определить и использовать возвращаемое значение при вызовах функций
6.3. Как использовать аннотации типов для написания понятных функций
6.4. Как повысить гибкость функции при помощи *args и **kwargs
6.5. Как правильно написать doc-строку для функции
Итоги
7. Продвинутое использование функций
7.1. Как определяются лямбда-функции
7.2. К каким последствиям приводит использование функций как объектов
7.3. Как проверить быстродействие функций с декораторами
7.4. Как использовать функции-генераторы в качестве поставщика данных, эффективно расходующего память
7.5. Как создать частичные функции для упрощения вызова функций
Итоги
Часть 3. Определение классов
8. Определение пользовательских классов
8.1. Как определить метод инициализации для класса
8.2. Как определяются методы экземпляров, статические методы и методы классов
8.3. Как организовать более точное управление доступом в классе
8.4. Как настроить строковое представление класса
8.5. Для чего и как создаются надклассы и подклассы
Итоги
9. Продвинутое использование классов
9.1. Как создавать перечисления
9.2. Как использовать классы данных для устранения шаблонного кода
9.3. Как подготовить и обработать данные JSON
9.4. Как создать отложенные атрибуты для улучшения быстродействия
9.5. Как определить классы с четким разделением ответственности
Итоги
Часть 4. Операции с объектами и файлами
10. Основы работы с объектами
10.1. Как проверить тип переменной для повышения гибкости кода
10.2. Как выглядит жизненный цикл объекта
10.3. Как скопировать объект
10.4. Как обратиться к переменной и изменить ее в другой области видимости
10.5. Что такое вызываемость и что она означает
Итоги
11. Работа с файлами
11.1. Как выполнять чтение и запись в файлы через управление контекстом
11.2. Как работать с табличными файлами данных
11.3. Как сохранять данные в файлах с использованием консервации
11.4. Как управлять файлами на своем компьютере
11.5. Как получить метаданные файла
Итоги
Часть 5. Защита кодовой базы
12. Ведение журнала и обработка исключений
12.1. Как следить за работой программы посредством логирования
12.2. Как правильно хранить журнальные записи
12.3. Как обрабатывать исключения
12.4. Как использовать секции else и finally при обработке исключений
12.5. Как выдавать содержательные исключения с пользовательскими классами исключений
Итоги
13. Отладка и тестирование
13.1. Как выявить проблемы с помощью трассировки
13.2. Как провести отладку программы в интерактивном режиме
13.3. Как тестировать функции автоматически
13.4. Как провести автоматическое тестирование класса
Итоги
Часть 6. Построение веб-приложения
14. Завершение реального проекта
14.1. Как использовать для проекта виртуальную среду
14.2. Как построить модели данных для проекта
14.3. Как использовать в приложении базу данных SQLite
14.4. Как построить веб-приложение для взаимодействия с клиентом (фронтенд)
Итоги
Решения задач
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Глава 8
Глава 9
Глава 10
Глава 11
Глава 12
Глава 13
Глава 14

Посвящаю своей жене Тинтин Гу, которая сидела рядом со мной поздними вечерами, пока я писал эту книгу.

Предисловие

Пожалуй, мы — самое везучее поколение в истории человечества. Мы живем не в период неолита и не в индустриальный век, мы вошли в информационную эпоху. Современные информационные технологии, особенно компьютеры и сети, полностью изменили жизнь человека. Мы можем перелететь из своего родного города в другое место, находящееся за тысячи километров, менее чем за полдня. В случае необходимости мы можем записаться на прием к врачу по смартфону и побеседовать с ним по видеосвязи. У нас есть возможность заказать почти любой товар в интернет-магазине и получить его в считаные дни и даже часы.

Изменения в нашей жизни сопровождались накоплением громадных объемов данных, особенно в последние двадцать лет. Работа по обработке и анализу данных привела к появлению новой межотраслевой дисциплины — data science. Будучи ученым-бихевиористом, я проводил много времени за работой с данными: можно сказать, что я применял теорию data science к исследованиям в области поведенческой психологии. Однако для обработки таких объемов данных не обойтись ручкой и листом бумаги. Вместо этого я писал на замечательном языке программирования Python код для анализа данных и применения статистических моделей.

Как программист-самоучка я знаю, что изучить Python или любой другой язык программирования достаточно сложно, и не только из-за того, что освоение всех средств (и умение правильно выбирать их в той или иной ситуации) занимает массу времени. Сейчас доступно слишком много учебных ресурсов — онлайн-курсов, учебных видеороликов, статей в блогах и, разумеется, книг. Как выбрать те, которые лучше всего подходят для вас?

Я столкнулся с этим вопросом в начале своего изучения Python. За прошедшие годы я пробовал пользоваться разными ресурсами и обнаружил, что лучшими источниками информации являются книги, потому что они содержат четко структурированный материал, а это позволяет овладеть языком на более глубоком уровне. В процессе обучения вы сами выбираете наиболее подходящий для вас темп проработки материала — при необходимости можно замедлить чтение, чтобы усвоить более сложные темы. Да и к стоящей на полке книге всегда легко обратиться при возникновении каких-либо вопросов.

Многие книги о Python, представленные на рынке, написаны либо для начинающих (с подробным описанием базовых возможностей языка), либо для опытных пользователей (с рассказом о специализированных методах, которые не столь универсальны). Бесспорно, некоторые из этих книг превосходны. Но приняв во внимание график роста мастерства с накоплением опыта, я счел, что среди этих книг не хватает предназначенной для тех, кто в своем освоении Python переходит с начального уровня на средний. Именно на этой решающей стадии у изучающих формируются правильные навыки работы с кодом и понимание того, какие средства Python лучше использовать в конкретном контексте. Что же касается материала, я решил, что в этой будущей книге должны рассматриваться общие проблемы программирования, которые большинство читателей смогут связать со своей работой независимо от того, применяют ли они Python для веб-программирования или в data science. Иначе говоря, такая книга пригодится многим читателям, потому что она предоставляет информацию, не привязанную к конкретной предметной области.

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

Благодарности

Хочу поблагодарить своих наставников, доктора Пола Чинчирипини (Dr. Paul Cinciripini) и доктора Джейсона Робинсона (Dr. Jason Robinson) из Андерсоновского онкологического центра Университета Техаса; они поддерживали меня, пока я учился использовать Python как язык для нашей аналитической работы, которая в конечном итоге и привела к появлению этой книги.

Также хочу поблагодарить команду издательства Manning: издателя Маржана Бейса (Marjan Bace) за руководство редакционной коллегией и технологической группой; соиздателя Майкла Стивенса (Michael Stephens), предложившего мне написать эту книгу; старшего ведущего редактора Марину Майклз (Marina Michaels) за координацию и редактирование; Рене ван ден Берг (René van den Berg) за научное редактирование; Уолтера Александера (Walter Alexander) и Игнасио Торреса (Ignacio Torres) за рецензирование кода; Александара Драгосавлевича (Aleksandar Dragosavljević) за организацию коллегиального рецензирования; весь персонал — за усердную работу по форматированию книги.

С благодарностью перечисляю рецензентов, предоставивших полезные отзывы: Алексей Знаменский (Alexei Znamensky), Алексей Выскубов (Alexey Vyskubov), Ариэль Андрес (Ariel Andres), Брент Бойлан (Brent Boylan), Крис Колосивски (Chris Kolosiwsky), Кристофер Карделл (Christopher Kardell), Кристофер Виллануэва (Christopher Villanueva), Клаудиу Шиллер (Claudiu Schiller), Клиффор Турбер (Clifford Thurber), Дирк Гомес (Dirk Gomez), Ганеш Сваминатан (Ganesh Swaminathan), Георгиос Думас (Georgios Doumas), Джеральд Мэк (Gerald Mack), Грегори Граймс (Gregory Grimes), Игорь Дудченко (Igor Dudchenko), Иябо Синдику (Iyabo Sindiku), Джеймс Мэтлок (James Matlock), Джеффри М. Смит (Jeffrey M. Smith), Джош Макадамс (Josh McAdams), Кирти Шетти (Keerthi Shetty), Ларри Кай (Larry Cai), Луис Алойа (Louis Aloia), Маркус Гезелл (Marcus Geselle), Мэри Энн Тигезен (Mary Anne Thygesen), Майк Баран (Mike Baran), Нинослав Черкез (Ninoslav Cerkez), Оливер Кортен (Oliver Korten), Пьерджиорджио Фаралья (Piergiorgio Faraglia), Радхакришна М.В. (Radhakrishna M.V.), Раджиндер Ядав (Rajinder Yadav), Рэймонд Чун (Raymond Cheung), Роберт Веннер (Robert Wenner), Шанкар Свами (Shankar Swamy), Шрирам Мачарла (Sriram Macharla), Гири С. Сваминатан (Giri S. Swaminathan), Стивен Эррера (Steven Herrera) и Витош К. Дойнов (Vitosh K. Doynov). Их предложения помогли улучшить эту книгу.

О книге

В этой книге я сосредоточился на основных приемах работы с Python, не привязывая их к какой-либо конкретной специализации. Хотя существует множество пакетов Python для разных специализированных областей (например, для data science или для веб-программирования), все эти пакеты строятся на основе базовых средств Python. Какие бы специализированные пакеты Python вы ни использовали в работе, также необходимо хорошо владеть основными навыками — скажем, правильно выбирать модели данных и писать структурированные функции и классы. С этими навыками вы сможете легко пользоваться любыми специализированными пакетами.

Для кого эта книга

Если какое-то время вы изучали Python самостоятельно, но ваши знания языка представляются вам недостаточно упорядоченными, то вы, вероятно, находитесь в процессе перехода с начального уровня на промежуточный. Эта книга написана специально для вас, потому что вам нужно подкрепить свои знания Python и обобщить их в структурированной форме. В каждой главе этой книги я выделяю несколько тем для решения общих проблем, с которыми вы можете столкнуться в процессе работы. Впрочем, изложение этих тем не ограничивается решением конкретной проблемы — материал помещается в более широкий контекст, чтобы показать, почему и насколько эта тема важна при работе над любым проектом. Таким образом, вы не ограничиваетесь конкретными приемами решения отдельных задач, а работаете над своим проектом, параллельно осваивая применение этих приемов.

Структура книги

Книга состоит из шести частей, названия которых представлены на следующей схеме («Дорожной карте»). В части 1 (главы 2–5) изучаются встроенные модели данных, включая строки, списки и словари. Эти модели данных являются структурными элементами любого проекта.

В части 2 (главы 6 и 7) рассказано о том, как определяются функции. Функции считаются неотъемлемой частью любого проекта, потому что они обеспечивают обработку данных для получения нужного вывода. В части 3 (главы 8 и 9) вы научитесь правильно определять пользовательские классы. Вместо применения встроенных классов мы определяем пользовательские классы для более эффективного моделирования данных в проекте. В части 4 (главы 10 и 11) представлены основы использования объектов и управления файлами. Часть 5 (главы 12 и 13) посвящена различным средствам повышения надежности программ, включая ведение журнала, обработку исключений и тестирование. В части 6 (глава 14) все полученные знания синтезируются для построения веб-приложения — проекта, который служит учебной основой для материала всех остальных глав.

Я рекомендую во время работы над книгой сразу воспроизводить все приведенные примеры на компьютере. Это позволит вам быстрее освоить синтаксис Python и основные приемы программирования. Я загрузил весь исходный код на GitHub, и мой общедоступный репозиторий доступен по адресу https://github.com/ycui1/python_how_to. Однако приводя в книге какой-либо код, я также привожу все необходимые пояснения и результаты, так что ничего страшного, если при чтении книги у вас под рукой не будет компьютера.

Если вы намерены воспроизводить примеры на компьютере, не имеет значения, какая на нем установлена операционная система. Windows, macOS и Linux — подойдет любая, потому что Python является кросс-платформенным языком программирования. Так как в книге я сосредоточусь на важнейших приемах и методах, которые устоялись в последних выпусках Python, не так важно, работаете ли вы на Python 3.8 или более ранней версии. Тем не менее, чтобы извлечь максимум пользы из книги, я рекомендую установить Python версии 3.10 и выше.

О коде в книге

Книга содержит множество примеров исходного кода, размещенного как в нумерованных листингах, так и в тексте. В обоих случаях исходный код форматируется моношириннымшрифтом, в отличие от обычного текста. Иногда для кода также применяется полужирный шрифт, чтобы выделить фрагменты, изменившиеся по сравнению с предыдущими шагами, например, при добавлении новой функциональности в существующую строку кода.

Во многих случаях оригинальная версия исходного кода переформатирована; я добавил разрывы строк и изменил отступы, чтобы код помещался на странице. Иногда в листинги включаются маркеры продолжения строк (➥). Также из исходного кода удалены комментарии, если код описывается в тексте. Многие листинги сопровождаются аннотациями, поясняющими важные понятия.

Исполняемые фрагменты кода можно загрузить из электронной версии книги на liveBook: https://livebook.manning.com/book/python-how-to. Полный код примеров книги доступен для загрузки на сайтах издательства Manning (https://www.manning.com/books/python-how-to) и GitHub (https://github.com/ycuil/python_how_to).

Форум LiveBook

Приобретая книгу «Рецепты Python», вы получаете бесплатный доступ к веб-форуму издательства Manning (на английском языке), на котором можно оставлять комментарии о книге, задавать технические вопросы и получать помощь от автора и других пользователей. Чтобы получить доступ к форуму, откройте страницу https://livebook.manning.com/book/python-how-to/discussion. Информация о форумах Manning и правилах поведения на них размещена на https://livebook.manning.com/#!/discussion.

В рамках своих обязательств перед читателями издательство Manning предоставляет ресурс для содержательного общения читателей и авторов. Эти обязательства не подразумевают конкретную степень участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы обсуждений доступны на веб-сайте издательства, пока книга продолжает издаваться.

Другие источники информации

Официальную документацию, включая учебники и справочники, можно найти по адресу https://docs.python.org/3. Автор книги, доктор Юн Цуй, регулярно ведет блоги о Python и сопутствующих темах data science на платформе Medium (https://medium.com/@yongcui01).

Об авторе

Доктор Юн Цуй — ученый, проработавший в области биомедицины более пятнадцати  лет. Его исследовательская работа была посвящена разработке мобильных приложений медицинского назначения для поведенческой психотерапии на языках Swift и Kotlin. Его любимый язык Python стал основным средством для анализа данных, машинного обучения и разработки исследовательского инструментария. В свободное время он публикует в блогах посты по различным техническим темам, включая мобильную разработку, программирование на языке Python и искусственный интеллект.

Иллюстрация на обложке

Иллюстрация, помещенная на обложку второго издания книги и озаглавленная «Paysanne des environs de Soleure», или «Крестьянка из окрестностей Золотурна», взята из вышедшего в 1788 году каталога национальных костюмов, составленного Жаком Грассе де Сен-Совером (Jacques Grasset de Saint-Sauveur). Каждая иллюстрация этого каталога тщательно прорисована и раскрашена от руки.

В прежние времена по одежде человека можно было легко определить, где он живет и какова его профессия или положение в обществе. Издательство Manning приветствует изобретательность и инициативность — качества, присущие индустрии IT, — и в знак этого размещает на обложках изображения, которые демонстрируют богатое разнообразие региональных культур, запечатленное на старинных иллюстрациях.

От издательства

На протяжении всей книги автор рассматривает сквозной пример: приложение для управления задачами (таск-менеджер). Названия задач в этом примере (такие, как Laundry — стирка, Homework — домашнее задание, Pay bills — оплатить счета и т.д.) мы не переводили, так как они являются составной частью исходного кода. На понимание излагаемого материала это не влияет!

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.

Часть 1. Использование встроенных моделей данных

Мы создаем приложения для решения неких повседневных задач. Интернет-магазины предназначены для того, чтобы люди покупали одежду и книги, не выходя из дому. Программы управления кадрами — чтобы компании могли управлять своими сотрудниками. Программы для работы с текстом дают возможность редактировать документы. С точки зрения разработки, какие бы задачи ни решало приложение, необходимо извлечь и обработать информацию об этих задачах. В программировании для моделирования разных видов информации в приложениях (например, описаний продуктов и сотрудников) должны использоваться соответствующие структуры данных. Они обеспечивают нас стандартизированными способами представления реальных сущностей в приложениях, позволяя применять конкретные правила, структуры и реализации для решения бизнес-задач.

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