Как и обещает название, книга познакомит вас с одним из самых популярных языков программирования — Python. Издание предназначено как для начинающих программистов, так и для тех, кто уже имеет опыт в написании программ и просто желает добавить Python к списку доступных ему языков.
В большинстве случаев изучать компьютерный язык проще, чем человеческий, — в нем меньше двусмысленностей и исключений, которые приходится запоминать. Python — один из самых последовательных и понятных компьютерных языков, он сочетает в себе простоту изучения, простоту использования и большую выразительную силу.
Компьютерные языки состоят из данных — аналогами в разговорной речи являются существительные — и инструкций (или кода), которые можно сравнить с глаголами. Изучить нужно будет и то и другое: вы освоите основы кода и структур данных и узнаете, как их объединить. Затем перейдете к более сложным темам, а программы, которые вы будете читать и писать, станут длиннее и сложнее. Если провести аналогию с работой по дереву, мы начнем с молотка, гвоздей и небольших кусков древесины, а во второй половине книги обратимся к более специализированным инструментам, которые можно сравнить с токарными станками и другими более сложными устройствами.
Вам нужно знать не только сам язык, но и то, что с его помощью можно делать. Мы начнем с языка Python и его стандартной библиотеки, готовой к работе прямо «из коробки». Помимо этого, я покажу вам, как находить, загружать, устанавливать и использовать качественные сторонние пакеты: касаться узких тем или рассматривать сложные трюки не буду, а сделаю акцент на том, что после десяти лет работы с Python считаю действительно полезным.
Несмотря на то что книга представляет собой введение в Python, в ней мы затронем и несколько дополнительных тем, с которыми, на мой взгляд, следует ознакомиться еще на начальном этапе. Работе с базами данных и Интернетом мы тоже уделим внимание, однако не станем забывать, что технологии меняются очень быстро — теперь от программиста на Python общество ждет знаний об облачных технологиях, машинном обучении и создании потоков событий: основную информацию по этим темам вы также здесь найдете.
Язык Python имеет некоторые специальные функции, работающие лучше, чем адаптированные стили программирования из других языков. Например, использование ключевого слова for и итераторов — более прямой способ создания цикла: пользоваться им гораздо удобнее, нежели вручную инкрементировать переменную-счетчик.
Когда вы изучаете что-то новое, бывает трудно определиться с тем, какие слова являются терминами и какие понятия на самом деле важны. Иначе говоря, тестировалась ли эта функциональность? Я выделю некоторые термины и понятия, которые имеют особое значение в Python. Код, написанный на языке Python, можно будет увидеть даже в самых первых главах.
Подобные примечания я буду делать, когда что-то может быть непонятным или же существует более питонский способ решить проблему.
Python неидеален. Я обращу ваше внимание на то, что кажется сомнительным и чего следует избегать, и предложу альтернативные варианты.
По некоторым темам, таким как наследование объектов, MVC или проектирование REST для работы с Интернетом, мое мнение может отличаться от общепринятого. Вам самим решать, к кому прислушаться.
Эта книга для всех, кто заинтересован в изучении одного из самых популярных во всем мире языков программирования. Наличие или отсутствие опыта с другими языками программирования не имеет значения.
Что изменилось со времени выхода первого издания?
• Добавилось около 100 страниц, в том числе с изображением котиков.
• Количество глав удвоилось, но сами главы стали короче.
• В начале книги появилась глава, посвященная типам данных, переменным и именам.
• Рассмотрены новые особенности Python, такие как f-строки.
• Рекомендованы новые или улучшенные сторонние библиотеки.
• Во всей книге присутствуют новые примеры кода.
• Для начинающих разработчиков добавлен текст с описанием аппаратного и программного обеспечения.
• Более опытные разработчики могут ознакомиться с библиотекой asyncio.
• Рассмотрен новый стек технологий: контейнеры, облачные технологии, наука о данных и машинное обучение.
• Добавлены подсказки, с помощью которых вы сможете найти работу программиста на Python.
Что не изменилось? Примеры, в которых используются плохие стихотворения и утки. Они с нами навсегда.
В первой части излагаются основы языка программирования Python: главы 1–11 следует читать по порядку. Я оперирую простейшими структурами данных и кода, постепенно составляя из них более сложные и реалистичные программы. Во второй части (главы 12–22) показывается, каким образом язык программирования Python используется в определенных прикладных областях, таких как Интернет, базы данных, сети и т.д.: эти главы можно читать в любом порядке.
Вот краткое содержание всех глав и приложений и обзор новых терминов, с которыми вы там встретитесь.
•Глава 1. «Python: с чем его едят». Компьютерные программы не так уж и отличаются от других инструкций, с которыми вы сталкиваетесь каждый день. Мы рассмотрим небольшие программы, написанные на Python. Они продемонстрируют синтаксис языка, его возможности и способы применения в реальном мире. Вы узнаете, как запустить программу внутри интерактивного интерпретатора (оболочки), а также из текстового файла, сохраненного на вашем компьютере.
• Глава 2. «Данные: типы, значения, переменные и имена». В компьютерных языках используются данные и инструкции. Компьютер по-разному хранит и обрабатывает разные типы данных. Их значения или можно изменять (такие типы называются изменяемыми), или нельзя (неизменяемые типы). В программе, написанной на Python, данные могут быть представлены как литералами (числами вроде 78 или текстовыми строками вроде "waffle"), так и именованными переменными. В отличие от многих других языков программирования Python относится к переменным как к именам, и это влечет за собой некоторые важные последствия.
• Глава 3. «Числа». В этой главе показываются простейшие типы данных, применяемые в языке программирования Python: булевы переменные, целыечисла и числа с плавающей точкой. Вы также изучите простейшую математику. В примерах этой главы интерактивный интерпретатор Python используется как калькулятор.
• Глава 4. «Выбираем с помощью оператора if». С существительными (типами данных) и с глаголами (программными структурами) мы поработаем в нескольких главах. Код, написанный на Python, обычно выполняется по одной строке за раз: от начала программы до ее конца. Структура if позволяет запускать разные строки кода исходя из результата сравнения определенных данных.
• Глава 5. «Текстовые строки». Здесь мы обратимся к существительным и миру текстовых строк. Вы научитесь создавать, объединять, изменять и получать строки, а также выводить их на экран.
• Глава 6. «Создаем циклы с помощью ключевых слов while и for». Снова глаголы. Вы научитесь создавать цикл двумя способами — с помощью for и с помощью while, а также узнаете, что такое итераторы — одно из основных понятий Python.
• Глава 7. «Кортежи и списки». Пришло время рассмотреть первые структуры данных более высокого уровня: списки и кортежи. Они представляют собой последовательности значений, которыми вы будете пользоваться как конструктором Lego для того, чтобы создавать более сложные структуры. Вы научитесь проходить по ним с помощью итераторов, а также быстро создавать списки с помощью списковых включений.
• Глава 8. «Словари и множества». Словари и множества позволяют сохранять данные не по позиции, а по их значению. Вы увидите, насколько это удобно, — данная особенность Python станет одной из ваших любимых.
• Глава 9. «Функции». Соединяйте структуры данных из предыдущих глав со структурами кода, чтобы выполнять сравнение, выборку или повторение операций. Упаковывайте код в функции и обрабатывайте ошибки с помощью исключений.
• Глава 10. «Ой-ой-ой: объекты и классы». Слово «объект» недостаточно конкретно, но имеет большое значение во многих компьютерных языках, в том числе и в Python. Если вы уже занимались объектно-ориентированным программированием на других языках, то в сравнении с ними Python покажется вам более простым. В этой главе объясняется, когда следует использовать объекты и классы, а когда лучше выбрать другой путь.
• Глава 11. «Модули, пакеты и программы». Вы узнаете, как перейти к более крупным структурам кода — модулям, пакетам и программам, а также где можно разместить код и данные, как ввести и вывести данные, обработать различные параметры, просмотреть стандартную библиотеку Python и то, что находится вне ее.
• Глава 12. «Обрабатываем данные». Вы научитесь профессионально обрабатывать данные и управлять ими. Эта глава полностью посвящена текстовым и двоичным данным, особенностям использования символов стандарта Unicode, а также поиску текста с помощью регулярных выражений. Вы познакомитесь с типами данных byte и bytearray — соперниками типа string, в которых содержатся необработанные бинарные значения вместо текстовых символов.
• Глава 13. «Календари и часы». С датой и временем работать бывает непросто. Здесь мы рассмотрим распространенные проблемы и способы их решения.
• Глава 14. «Файлы и каталоги». Простые хранилища данных используют файлы и каталоги. В этой главе речь пойдет о создании и использовании файлов и каталогов.
• Глава 15. «Данные во времени: процессы и конкурентность». Это первая глава, в которой мы приступаем к изучению системы. Начнем с данных во времени — вы научитесь использовать программы, процессы и потоки для того, чтобы выполнять больше работы за один промежуток времени (конкурентность). Среди прочего будут упомянуты последние добавления в async (более подробно они рассматриваются в приложении В).
• Глава 16. «Данные в коробке: надежные хранилища». Данные могут храниться в простых файлах и каталогах внутри файловых систем и структурироваться с помощью распространенных форматов, таких как CSV, JSON и XML. Однако по мере того, как объем и сложность данных будут расти, вам, возможно, придется использовать базы данных — как традиционные реляционные, так и современные базы данных NoSQL.
• Глава 17. «Данные в пространстве: сети». Отправляйте ваш код и данные через пространство по сетям с помощью служб, протоколов и API. В качестве примеров рассматриваются как низкоуровневые сокеты, библиотеки обмена сообщениями и системы массового обслуживания, так и развертывание в облачных системах.
• Глава 18. «Распутываем Всемирную паутину». Всемирной сети посвящена отдельная глава, в которой рассматриваются клиенты, серверы, извлечение данных, API и фреймворки. Вы научитесь искать сайты и извлекать из них данные, а затем разработаете реальный сайт, используя параметры запросов и шаблоны.
• Глава 19. «Быть питонщиком». В этой главе содержатся советы для программистов, пишущих на Python: вы получите рекомендации по установке (с помощью pip и virtualenv), использованию IDE, тестированию, отладке, журналированию, контролю исходного кода и документации. Узнаете также, как найти и установить полезные пакеты сторонних разработчиков, как упаковать свой код для повторного использования и где получить более подробную информацию.
• Глава 20. «Пи-Арт». При помощи языка программирования Python можно создавать произведения искусства: в графике, музыке, анимации и играх.
• Глава 21. «За работой». У Python есть специальные приложения для бизнеса: визуализация данных (графики, графы и карты), безопасность и регулирование.
• Глава 22. «Python в науке». За последние несколько лет Python стал главным языком науки, он используется в математике, статистике, физике, биологии и медицине. Его сильные стороны — наука о данных и машинное обучение. В этой главе демонстрируются возможности таких инструментов, как NumPy, SciPy и Pandas.
• Приложение А. «Аппаратное и программное обеспечение для начинающих программистов». Если вы новичок в мире программирования, из этого приложения вы можете узнать, как на самом деле работает аппаратное и программное обеспечение и что означают некоторые термины, с которыми в дальнейшем вам придется сталкиваться.
• Приложение Б. «Установка Python 3». Если вы еще не установили Python 3 на свой компьютер, в этом приложении вы найдете информацию о том, как это сделать независимо от того, какая операционная система у вас установлена: Windows, Mac OS/X, Linux или другой вариант Unix.
• Приложение В. «Нечто совершенно иное: async». В разных релизах Python добавляется функциональность для работы с асинхронностью — разобраться с ней может быть сложно. Я упоминаю о ней в тех главах, в которых заходит речь об асинхронности, но в этом приложении рассматриваю тему более подробно.
• Приложение Г. «Ответы к упражнениям». Здесь содержатся ответы на упражнения, приведенные в конце каждой главы. Не подглядывайте туда, пока не попробуете решить задачи самостоятельно, в противном случае вы рискуете превратиться в козленочка.
•Приложение Д. «Вспомогательные таблицы». В этом приложении содержатся справочные данные.
Языки программирования со временем изменяются — разработчики добавляют в них новые возможности и исправляют ошибки. Примеры этой книги написаны и протестированы для версии Python 3.7. Версия 3.7 является наиболее современной на момент выхода этой книги, и о самых значимых нововведениях я расскажу. Версия 3.8 вышла в конце 2019 года — я рассмотрю самую ожидаемую функциональность. Узнать, что и когда было добавлено в язык программирования Python, можно, посетив страницу /: там представлена техническая информация. Она, скорее всего, покажется трудной для понимания, если вы только начинаете изучать Python, но может пригодиться в будущем, если вам нужно будет писать программы для компьютеров, на которых установлены другие версии Python.
В этой книге приняты следующие шрифтовые соглашения.
Курсив
Им обозначаются новые термины и понятия.
Моноширинный шрифт
Используется в листингах программного кода, а также для имен и расширений файлов, названий путей, имен функций, команд, баз данных, переменных, операторов и ключевых слов.
Зеленый моноширинный шрифт
Указывает текст, который необходимо заменить пользовательскими значениями или значениями, определяемыми контекстом.
Так оформлены совет, предложение или замечание.
Таким образом оформлено предупреждение.
Примеры кода и упражнения, приведенные в тексте, доступны для загрузки по адресу . Эта книга написана, чтобы помочь вам в работе: вы можете применить код, содержащийся в ней, в ваших программах и документации и не связываться с нами, чтобы спросить разрешения, если собираетесь воспользоваться небольшим фрагментом кода. Например, если вы пишете программу и кое-где вставляете в нее код из книги, никакого особого разрешения не требуется. Однако если вы запишете на диск примеры из книги и начнете раздавать или продавать такие диски, разрешение на это получить необходимо. Если вы цитируете это издание, отвечая на вопрос, или воспроизводите код из него в качестве примера, разрешения не требуется. Но если включаете значительный фрагмент кода из данной книги в документацию по вашему продукту, необходимо разрешение.
Ссылки на источник приветствуются, но не обязательны. В такие ссылки обычно включаются название книги, имя ее автора, название издательства и номер ISBN. Например: «Простой Python. Современный стиль программирования. 2-е изд. Билл Любанович. Питер, 2020. 978-5-4461-1639-3».
При любых сомнениях относительно превышения разрешенного объема использования примеров кода, приведенных в данной книге, можете обращаться к нам по адресу .
Ваши замечания, предложения, вопросы отправляйте по адресу (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства вы найдете подробную информацию о наших книгах.
Оригинальное издание выпущено до выхода версии 3.8. Текущая версия — 3.8.2. — Примеч. ред.