Об авторе....34
Введение....26
Для кого эта книга....27
Что нового во втором издании....27
Структура книги....28
Версии Python....31
Условные обозначения....31
Использование примеров кода....32
От издательства....32
Благодарности....33
Часть I. Основы Python....35
Глава 1. Python: с чем его едят....36
Тайны....36
Маленькие программы....38
Более объемная программа....40
Python в реальном мире....44
Python против языка с планеты Х....45
Почему же Python?....48
Когда не стоит использовать Python....49
Python 2 против Python 3....50
Установка Python....51
Запуск Python....51
Интерактивный интерпретатор....51
Файлы Python....52
Что дальше?....53
Момент просветления....53
Читайте далее....54
Упражнения....54
Глава 2. Данные: типы, значения, переменные и имена....55
В Python данные являются объектами....55
Типы....56
Изменчивость....57
Значения-литералы....58
Переменные....58
Присваивание....60
Переменные — это имена, а не локации....61
Присваивание нескольким именам....64
Переназначение имени....64
Копирование....64
Выбираем хорошее имя переменной....65
Читайте далее....66
Упражнения....66
Глава 3. Числа....67
Булевы значения....67
Целые числа....68
Числа-литералы....68
Операции с целыми числами....69
Целые числа и переменные....71
Приоритет операций....73
Системы счисления....74
Преобразования типов....76
Насколько объемен тип int?....78
Числа с плавающей точкой....79
Математические функции....80
Читайте далее....81
Упражнения....81
Глава 4. Выбираем с помощью оператора if....82
Комментируем с помощью символа #....82
Продлеваем строки с помощью символа \....83
Сравниваем с помощью операторов if, elif и else....84
Что есть истина?....87
Выполняем несколько сравнений с помощью оператора in....88
Новое: I Am the Walrus....89
Читайте далее....90
Упражнения....90
Глава 5. Текстовые строки....91
Создаем строки с помощью кавычек....91
Создаем строки с помощью функции str()....94
Создаем escape-последовательности с помощью символа \....94
Объединяем строки с использованием символа +....96
Размножаем строки с помощью символа *....96
Извлекаем символ с помощью символов [ ]....97
Извлекаем подстроки, используя разделение....98
Измеряем длину строки с помощью функции len()....100
Разделяем строку с помощью функции split()....100
Объединяем строки с помощью функции join()....101
Заменяем символы с использованием функции replace()....101
Устраняем символы с помощью функции strip()....102
Поиск и выбор....103
Регистр....104
Выравнивание....105
Форматирование....105
Старый стиль: %....106
Новый стиль: используем символы {} и функцию format()....108
Самый новый стиль: f-строки....110
Что еще можно делать со строками....111
Читайте далее....111
Упражнения....111
Глава 6. Создаем циклы с помощью ключевых слов while и for....113
Повторяем действия с помощью цикла while....113
Прерываем цикл с помощью оператора break....114
Пропускаем итерации, используя оператор continue....114
Проверяем, завершился ли цикл раньше, с помощью блока else....115
Выполняем итерации с использованием ключевых слов for и in....115
Прерываем цикл с помощью оператора break....116
Пропускаем итерации, используя оператор continue....116
Проверяем, завершился ли цикл раньше, с помощью блока else....116
Генерируем числовые последовательности с помощью функции range()....117
Прочие итераторы....118
Читайте далее....118
Упражнения....118
Глава 7. Кортежи и списки....119
Кортежи....119
Создаем кортежи с помощью запятых и оператора ()....120
Создаем кортежи с помощью функции tuple()....121
Объединяем кортежи с помощью оператора +....121
Размножаем элементы с помощью оператора * ....122
Сравниваем кортежи....122
Итерируем по кортежам с помощью for и in....122
Изменяем кортеж....122
Списки....123
Создаем списки с помощью скобок []....123
Создаем список или преобразуем в список с помощью функции list()....123
Создаем список из строки с использованием функции split()....124
Получаем элемент с помощью конструкции [смещение]....124
Извлекаем элементы с помощью разделения....125
Добавляем элемент в конец списка с помощью функции append()....126
Добавляем элемент на определенное место с помощью функции insert()....126
Размножаем элементы с помощью оператора *....127
Объединяем списки с помощью метода extend() или оператора +....127
Изменяем элемент с помощью конструкции [смещение]....128
Изменяем элементы с помощью разделения....128
Удаляем заданный элемент с помощью оператора del....129
Удаляем элемент по значению с помощью функции remove()....129
Получаем и удаляем заданный элемент с помощью функции pop()....129
Удаляем все элементы с помощью функции clear()....130
Определяем смещение по значению с помощью функции index()....130
Проверяем на наличие элемента в списке с помощью оператора in....131
Подсчитываем количество включений значения с помощью функции count()....131
Преобразуем список в строку с помощью функции join()....131
Меняем порядок элементов с помощью функций sort() или sorted()....132
Получаем длину списка с помощью функции len()....133
Присваиваем с помощью оператора =....133
Копируем списки с помощью функций copy() и list() или путем разделения....134
Копируем все с помощью функции deepcopy()....134
Сравниваем списки ....135
Итерируем по спискам с помощью операторов for и in....136
Итерируем по нескольким последовательностям с помощью функции zip()....137
Создаем список с помощью списковых включений....138
Списки списков....140
Кортежи или списки?....141
Включений кортежей не существует....141
Читайте далее....142
Упражнения....142
Глава 8. Словари и множества....144
Словари....144
Создаем словарь с помощью {}....144
Создаем словарь с помощью функции dict()....145
Преобразуем с помощью функции dict()....146
Добавляем или изменяем элемент с помощью конструкции [ключ]....146
Получаем элемент словаря с помощью конструкции [ключ] или функции get()....148
Получаем все ключи с помощью функции keys()....148
Получаем все значения с помощью функции values()....149
Получаем все пары «ключ — значение» с помощью функции items()....149
Получаем длину словаря с помощью функции len()....149
Объединяем словари с помощью конструкции {**a, **b}....149
Объединяем словари с помощью функции update()....150
Удаляем элементы по их ключу с помощью оператора del....151
Получаем элемент по ключу и удаляем его с помощью функции pop()....151
Удаляем все элементы с помощью функции clear()....151
Проверяем на наличие ключа с помощью оператора in....152
Присваиваем значения с помощью оператора =....152
Копируем значения с помощью функции copy()....152
Копируем все с помощью функции deepcopy() ....153
Сравниваем словари....154
Итерируем по словарям с помощью for и in....154
Включения словарей....155
Множества....156
Создаем множество с помощью функции set()....157
Преобразуем другие типы данных с помощью функции set()....157
Получаем длину множества с помощью функции len()....158
Добавляем элемент с помощью функции add()....158
Удаляем элемент с помощью функции remove()....158
Итерируем по множествам с помощью for и in....158
Проверяем на наличие значения с помощью оператора in....158
Комбинации и операторы....159
Включение множества....162
Создаем неизменяемое множество с помощью функции frozenset()....162
Структуры данных, которые мы уже рассмотрели....163
Создание крупных структур данных....164
Читайте далее....164
Упражнения....165
Глава 9. Функции....166
Определяем функцию с помощью ключевого слова def....166
Вызываем функцию с помощью скобок....167
Аргументы и параметры....167
None — это полезно....169
Позиционные аргументы....170
Аргументы — ключевые слова....171
Указываем значение параметра по умолчанию....171
Получаем/разбиваем аргументы — ключевые слова с помощью символа *....172
Получаем/разбиваем аргументы — ключевые слова с помощью символов **....174
Аргументы, передаваемые только по ключевым словам....175
Изменяемые и неизменяемые аргументы....176
Строки документации....176
Функции — это объекты первого класса....177
Внутренние функции....179
Анонимные функции: лямбда-выражения....181
Генераторы....182
Функции-генераторы....182
Включения генераторов....183
Декораторы....183
Пространства имен и область определения....186
Использование символов _ и __ в именах....188
Рекурсия....188
Асинхронные функции....190
Исключения....190
Обрабатываем ошибки с помощью операторов try и except....191
Создаем собственные исключения....192
Читайте далее....193
Упражнения....193
Глава 10. Ой-ой-ой: объекты и классы....194
Что такое объекты....194
Простые объекты....195
Определяем класс с помощью ключевого слова class....195
Атрибуты....196
Методы....197
Инициализация....197
Наследование....198
Наследование от родительского класса....199
Переопределение методов....200
Добавление метода....201
Получаем помощь от своего «родителя» с использованием метода super()....202
Множественное наследование....203
Примеси....205
В защиту self....205
Доступ к атрибутам....206
Прямой доступ....206
Геттеры и сеттеры....206
Свойства для доступа к атрибутам....207
Свойства для вычисляемых значений....209
Искажение имен для безопасности....209
Атрибуты классов и объектов....210
Типы методов....211
Методы объектов....211
Методы классов....212
Статические методы....212
Утиная типизация....213
Магические методы....215
Агрегирование и композиция....218
Когда использовать объекты, а когда — что-то другое....218
Именованные кортежи....219
Классы данных....221
Attrs....222
Читайте далее....222
Упражнения....222
Глава 11. Модули, пакеты и программы....224
Модули и оператор import....224
Импортируем модуль....224
Импортируем модуль с другим именем....226
Импортируем только самое необходимое....226
Пакеты....227
Путь поиска модуля....228
Относительный и абсолютный импорт....229
Пакеты пространств имен....229
Модули против объектов....230
Достоинства стандартной библиотеки Python....231
Обрабатываем отсутствующие ключи с помощью функций setdefault() и defaultdict()....231
Подсчитываем элементы с помощью функции Counter()....233
Упорядочиваем по ключу с помощью OrderedDict()....235
Стек + очередь == deque....235
Итерируем по структурам кода с помощью модуля itertools....236
Красиво выводим данные на экран с помощью функции pprint()....238
Работаем со случайными числами....238
Нужно больше кода....239
Читайте далее....240
Упражнения....240
Часть II. Python на практике....241
Глава 12. Обрабатываем данные....242
Текстовые строки: Unicode....243
Строки формата Unicode в Python 3....244
Кодирование и декодирование с помощью кодировки UTF-8....246
Кодирование....247
Декодирование....249
Сущности HTML....250
Нормализация....251
Подробная информация....252
Текстовые строки: регулярные выражения....253
Ищем точное начальное совпадение с помощью функции match()....254
Ищем первое совпадение с помощью функции search()....255
Ищем все совпадения, используя функцию findall()....255
Разбиваем совпадения с помощью функции split()....256
Заменяем совпадения с помощью функции sub()....256
Шаблоны: специальные символы....256
Шаблоны: использование спецификаторов....258
Шаблоны: указываем способ вывода совпадения....261
Бинарные данные....261
bytes и bytearray....262
Преобразуем бинарные данные с помощью модуля struct....263
Другие инструменты для работы с бинарными данными....266
Преобразуем байты/строки с помощью модуля binascii....267
Битовые операторы....267
Аналогия с ювелирными изделиями....268
Читайте далее....268
Упражнения....268
Глава 13. Календари и часы....271
Високосный год....272
Модуль datetime....273
Модуль time....275
Читаем и записываем дату и время....277
Все преобразования....281
Альтернативные модули....281
Читайте далее....282
Упражнения....282
Глава 14. Файлы и каталоги....283
Ввод информации в файлы и ее вывод из них....283
Создаем или открываем файлы с помощью функции open()....284
Записываем в текстовый файл с помощью функции print()....284
Записываем в текстовый файл с помощью функции write()....285
Считываем данные из текстового файла, используя функции read(), readline() и readlines()....286
Записываем данные в бинарный файл с помощью функции write()....288
Читаем бинарные файлы с помощью функции read()....289
Закрываем файлы автоматически с помощью ключевого слова with....289
Меняем позицию с помощью функции seek()....289
Отображение в памяти....291
Операции с файлами....292
Проверяем существование файла с помощью функции exists()....292
Проверяем тип с помощью функции isfile()....292
Копируем файлы, используя функцию copy()....293
Изменяем имена файлов с помощью функции rename()....293
Создаем ссылки с помощью функции link() или symlink()....293
Изменяем разрешения с помощью функции chmod()....294
Изменение владельца файла с помощью функции chown()....294
Удаляем файл с помощью функции remove()....294
Каталоги....295
Создаем каталог с помощью функции mkdir()....295
Удаляем каталог, используя функцию rmdir()....295
Выводим на экран содержимое каталога с помощью функции listdir()....295
Изменяем текущий каталог с помощью функции chdir()....296
Перечисляем совпадающие файлы, используя функцию glob()....296
Pathname....297
Получаем pathname с помощью функции abspath()....298
Получаем символьную ссылку с помощью функции realpath()....298
Построение pathname с помощью функции os.path.join()....298
Модуль pathlib....298
BytesIO и StringIO....299
Читайте далее....301
Упражнения....301
Глава 15. Данные во времени: процессы и конкурентность....302
Программы и процессы....302
Создаем процесс с помощью модуля subprocess....303
Создаем процесс с помощью модуля multiprocessing....304
Убиваем процесс, используя функцию terminate()....305
Получаем системную информацию с помощью модуля os....306
Получаем информацию о процессах с помощью модуля psutil....306
Автоматизация команд....307
Invoke....307
Другие вспомогательные методы для команд....308
Конкурентность....308
Очереди....309
Процессы....310
Потоки....311
Concurrent.futures....314
Зеленые потоки и gevent....317
Twisted....320
Asyncio....321
Redis....321
Помимо очередей....325
Читайте далее....326
Упражнения....326
Глава 16. Данные в коробке: надежные хранилища....327
Плоские текстовые файлы....327
Текстовые файлы, дополненные пробелами....328
Структурированные текстовые файлы....328
CSV....328
XML....331
Примечание о безопасности XML ....333
HTML....333
JSON....334
YAML....337
Tablib....338
Pandas....338
Конфигурационные файлы....340
Бинарные файлы....341
Электронные таблицы....341
HDF5....341
TileDB....342
Реляционные базы данных....342
SQL....343
DB-API....345
SQLite....345
MySQL....347
PostgreSQL....347
SQLAlchemy....348
Другие пакеты для работы с базами данных....354
Хранилища данных NoSQL....354
Семейство dbm....354
Memcached....355
Redis....356
Документоориентированные базы данных....363
Базы данных временных рядов....364
Графовые базы данных....365
Другие серверы NoSQL....365
Полнотекстовые базы данных....366
Читайте далее....366
Упражнения....366
Глава 17. Данные в пространстве: сети....368
TCP/IP....368
Сокеты....370
Scapy....374
Netcat....374
Паттерны для работы с сетями....375
Паттерн «Запрос — ответ»....375
ZeroMQ....375
Другие инструменты обмена сообщениями....380
Паттерн «Публикация — подписка»....380
Redis....380
ZeroMQ....382
Другие инструменты «публикации — подписки»....383
Интернет-сервисы....384
Доменная система имен....384
Модули Python для работы с электронной почтой....385
Другие протоколы....385
Веб-сервисы и API....385
Сериализация данных....386
Сериализация с помощью pickle....387
Другие форматы сериализации....388
Удаленные вызовы процедур....388
XML RPC....389
JSON RPC....390
MessagePack RPC....391
Zerorpc....392
gRPC....393
Twirp....393
Инструменты удаленного управления....394
Работаем с большими объемами данных....394
Hadoop....394
Spark....395
Disco....395
Dask....395
Работаем в облаках....396
Amazon Web Services....397
Google....397
Microsoft Azure....397
OpenStack....398
Docker....398
Kubernetes....398
Читайте далее....398
Упражнения....399
Глава 18. Распутываем Всемирную паутину....400
Веб-клиенты....401
Тестируем с помощью telnet....402
Тестируем с помощью curl....403
Тестируем с использованием httpie....404
Тестируем с помощью httpbin....405
Стандартные веб-библиотеки Python....405
За пределами стандартной библиотеки: requests....407
Веб-серверы....408
Простейший веб-сервер Python....409
Web Server Gateway Interface (WSGI)....410
ASGI....411
Apache....411
NGINX....412
Другие веб-серверы Python....413
Фреймворки для работы веб-серверами....413
Bottle....414
Flask....416
Django....420
Другие фреймворки....421
Фреймворки для работы с базами данных....421
Веб-сервисы и автоматизация....422
Модуль webbrowser....422
Модуль webview....423
REST API....424
Поиск и выборка данных....424
Scrapy....425
BeautifulSoup....425
Requests-HTML....426
Давайте посмотрим фильм....426
Читайте далее....429
Упражнения....429
Глава 19. Быть питонщиком....431
О программировании....431
Ищем код на Python....432
Установка пакетов....432
pip....433
virtualenv....434
pipenv....434
Менеджер пакетов....434
Установка из исходного кода....435
Интегрированные среды разработки....435
IDLE....435
PyCharm....435
IPython....436
Jupyter Notebook....438
JupyterLab....438
Именование и документирование....438
Добавление подсказок типов....440
Тестирование кода....440
Программы pylint, pyflakes, flake8 или PEP-8....441
Пакет unittest....443
Пакет doctest....447
Пакет nose....448
Другие фреймворки для тестирования....449
Постоянная интеграция....449
Отладка кода....450
Функция print()....450
Отладка с помощью декораторов....451
Отладчик pdb....452
Функция breakpoint()....458
Записываем в журнал сообщения об ошибках....458
Оптимизация кода....460
Измеряем время....461
Алгоритмы и структуры данных....464
Cython, NumPy и расширения C....465
PyPy....465
Numba....466
Управление исходным кодом....467
Mercurial....467
Git....467
Распространение ваших программ....470
Клонируйте эту книгу....470
Как узнать больше....470
Книги....471
Сайты....471
Группы....472
Конференции....472
Вакансии, связанные с Python....472
Читайте далее....473
Упражнения....473
Глава 20. Пи-Арт....474
Двумерная графика....474
Стандартная библиотека....474
PIL и Pillow....475
ImageMagick....478
Трехмерная графика....478
Трехмерная анимация....479
Графические пользовательские интерфейсы (GUI)....479
Диаграммы, графики и визуализация....481
Matplotlib....481
Seaborn....483
Bokeh....485
Игры....485
Аудио и музыка....486
Читайте далее....486
Упражнения....486
Глава 21. За работой....487
The Microsoft Office Suite....487
Выполняем бизнес-задачи....488
Обработка бизнес-данных....489
Извлечение, преобразование и загрузка....489
Валидация данных....493
Дополнительные источники информации....493
Пакеты для работы с бизнес-данными с открытым исходным кодом ....494
Python в области финансов....494
Безопасность бизнес-данных....495
Карты....495
Форматы....496
Нарисуем карту на основе шейп-файла....496
Geopandas....498
Другие пакеты для работы с картами....500
Приложения и данные....501
Читайте далее....502
Упражнения....502
Глава 22. Py в науке....503
Математика и статистика в стандартной библиотеке....503
Математические функции....503
Работа с комплексными числами....505
Рассчитываем точное значение чисел с плавающей точкой с помощью модуля decimal....506
Выполняем вычисления для рациональных чисел с помощью модуля fractions....507
Используем Packed Sequences с помощью модуля array....507
Обрабатываем простую статистику с помощью модуля statistics....508
Перемножение матриц....508
Python для науки....508
NumPy....508
Создаем массив с помощью функции array()....509
Создаем массив с помощью функции arange()....510
Создаем массив с помощью функций zeros(), ones() и random()....511
Изменяем форму массива с помощью метода reshape()....512
Получаем элемент с помощью конструкции []....513
Математика массивов....514
Линейная алгебра....514
Библиотека SciPy....515
Библиотека SciKit....516
Pandas....516
Python и научные области....517
Читайте далее....518
Упражнения....518
Приложения....519
Приложение А. Аппаратное и программное обеспечение для начинающих программистов....520
Аппаратное обеспечение....520
Компьютеры пещерных людей....520
Электричество....521
Изобретения....521
Идеальный компьютер....522
Процессор....522
Память и кэш....522
Хранение....522
Ввод данных....523
Вывод данных....523
Относительное время доступа....523
Программное обеспечение....524
Вначале был бит....524
Машинный язык....524
Ассемблер....525
Высокоуровневые языки....525
Операционные системы....526
Виртуальные машины....527
Контейнеры....527
Распределенные вычисления и сети....527
Облако....528
Kubernetes....528
Приложение Б. Установка Python 3....530
Проверьте свою версию Python....530
Установка стандартной версии Python....531
macOS....532
Windows....534
Linux или Unix....535
Установка менеджера пакетов pip ....535
Установка virtualenv....535
Другие способы работы с пакетами....536
Устанавливаем Anaconda....536
Приложение В. Нечто совершенно иное: async....538
Сопрограммы и циклы событий....538
Async против…....542
Асинхронные фреймворки и серверы....542
Приложение Г. Ответы к упражнениям....544
1. Python: с чем его едят....544
2. Типы данных, значения, переменные и имена....545
3. Числа....545
4. Выбираем с помощью if....546
5. Текстовые строки....547
6. Создаем циклы с помощью ключевых слов while и for....551
7. Кортежи и списки....552
8. Словари....556
9. Функции....559
10. Ой-ой-ой: объекты и классы....560
11. Модули, пакеты и программы....564
12. Обрабатываем данные....566
13. Календари и часы....571
14. Файлы и каталоги....572
15. Данные во времени: процессы и конкурентность....573
16. Данные в коробке: устойчивые хранилища....574
17. Данные в пространстве: сети....577
18. Распутываем Всемирную паутину....584
19. Быть питонщиком....585
20. Пи-Арт....585
21. За работой....586
22. Py в науке....586
Приложение Д. Вспомогательные таблицы ....587
Приоритет операторов....587
Строковые методы....588
Изменение регистра....588
Поиск....588
Изменение....588
Форматирование....589
Тип строки....589
Атрибуты модуля string....589
Эпилог....591
«Простой Python» познакомит вас с одним из самых популярных языков программирования. Книга идеально подойдет как начинающим, так и опытным программистам, желающим добавить Python к списку освоенных языков.
Любому программисту нужно знать не только язык, но и его возможности. Вы начнете с основ Python и его стандартной библиотеки. Узнаете, как находить, загружать, устанавливать и использовать сторонние пакеты. Изучите лучшие практики тестирования, отладки, повторного использования кода и получите полезные советы по разработке. Примеры кода и упражнения помогут в создании приложений для различных целей.