Python. Книга рецептов, Бизли Д., Джонс Б.К., 2019.
Книга, которую вы держите в руках, даст четкое понимание, как именно стоит писать приложения на Python, чтобы не пришлось раз за разом их переделывать и они были удобны для работы. Это наиболее полное и систематичное руководство по Python, в нем разобраны самые популярные подходы для создания легкочитаемого, оптимизированного и поддерживаемого кода. Также приведены примеры применения полученных знаний в прикладных областях, все главы сопровождаются конкретными заданиями.
Издание будет полезно как начинающим разработчикам, так и опытным специалистам.
Функции.
Определение функций с помощью инструкции def - краеугольный камень всех программ. Цель этой главы состоит в том, чтобы представить несколько продвинутых и необычных определений функций и паттернов их использования. Темы рассматривают аргументы по умолчанию, функции, способные принимать любое количество аргументов или только именованные аргументы, аннотации и замыкания. Также мы рассмотрим несколько непростых задач контроля потока управления и передачи данных, которые относятся к функциям обратного вызова (callback functions).
Содержание.
Предисловие.
Благодарности.
Об авторе.
Колофон.
Вступительное слово.
Глава 1. Структуры данных и алгоритмы.
1.1. Распаковка последовательности в отдельные переменные.
1.2. Распаковка элементов из последовательностей произвольной длины.
1.3. Оставляем N последних элементов.
1.4. Поиск N максимальных и минимальных элементов.
1.5. Реализация очереди с приоритетом.
1.6. Отображение ключей на несколько значений в словаре.
1.7. Поддержание порядка в словарях.
1.8. Вычисления со словарями.
1.9. Поиск общих элементов в двух словарях.
1.10. Удаление дубликатов из последовательности с сохранением порядка элементов.
1.11. Присваивание имен срезам.
1.12. Определение наиболее часто встречающихся элементов в последовательности.
1.13. Сортировка списка словарей по общему ключу.
1.14. Сортировка объектов, не поддерживающих сравнение.
1.15. Группирование записей на основе полей.
1.16. Фильтрование элементов последовательности.
1.17. Извлечение подмножества из словаря.
1.18. Отображение имен на последовательность элементов.
1.19. Одновременное преобразование и сокращение (свертка) данных.
1.20. Объединение нескольких отображений в одно.
Глава 2. Строки и текст.
2.1. Разрезание строк различными разделителями.
2.2. Поиск текста в начале и в конце строки.
2.3. Поиск строк с использованием масок оболочки (shell).
2.4. Поиск совпадений и поиск текстовых паттернов.
2.5. Поиск и замена текста.
2.6. Поиск и замена текста без учета регистра.
2.7. Определение регулярных выражений для поиска кратчайшего совпадения.
2.8. Написание регулярного выражения для многострочных шаблонов.
2.9. Нормализация текста в Unicode к стандартному представлению.
2.10. Использование символов Unicode в регулярных выражениях.
2.11. Срезание нежелательных символов из строк.
2.12. Чистка строк.
2.13. Выравнивание текстовых строк.
2.14. Объединение и конкатенация строк.
2.15. Интерполяция переменных в строках.
2.16. Разбивка текста на фиксированное количество колонок.
2.17. Работа с HTML- и XML-сущностями в тексте.
2.18. Токенизация текста.
2.19. Написание простого парсера на основе метода рекурсивного спуска.
2.20. Выполнение текстовых операций над байтовыми строками.
Глава 3. Числа, даты и время.
3.1. Округление числовых значений.
3.2. Выполнение точных вычислений с десятичными дробями.
3.3. Форматирование чисел для вывода.
3.4. Работа с бинарными, восьмеричными и шестнадцатеричными целыми числами.
3.5. Упаковка и распаковка больших целых чисел из байтовых строк.
3.6. Вычисления с комплексными числами.
3.7. Работа с бесконечными значениями и NaN.
3.8. Вычисления с дробями.
3.9. Вычисления на больших массивах чисел.
3.10. Вычисления с матрицами и линейная алгебра.
3.11. Случайный выбор.
3.12. Перевод дней в секунды и другие базовые методы конвертации времени.
3.13. Определение даты последней пятницы.
3.14. Поиск диапазона дат для текущего месяца.
3.15. Конвертирование строк в даты и время.
3.16. Манипулирование датами с учетом временных зон.
Глава 4. Итераторы и генераторы.
4.1. Ручное прохождение по итератору.
4.2. Делегирование итерации.
4.3. Создание новых итерационных паттернов с помощью генераторов.
4.4. Реализация протокола итератора.
4.5. Итерирование в обратном порядке.
4.6. Определение генератора с дополнительным состоянием.
4.7. Получение среза итератора.
4.8. Пропуск первой части итерируемого объекта.
4.9. Итерирование по всем возможным комбинациям и перестановкам.
4.10. Итерирование по парам «индекс–значение» последовательности.
4.11. Одновременное итерирование по нескольким последовательностям.
4.12. Итерирование по элементам, находящимся в отдельных контейнерах.
4.13. Создание каналов для обработки данных.
4.14. Превращение вложенной последовательности в плоскую.
4.15. Последовательное итерирование по слитым отсортированным итерируемым объектам.
4.16. Замена бесконечных циклов while итератором.
Глава 5. Файлы и ввод-вывод.
5.1. Чтение и запись текстовых данных.
5.2. Перенаправление вывода в файл.
5.3. Вывод с другим разделителем или символом конца строки.
5.4. Чтение и запись бинарных данных.
5.5. Запись в файл, которого еще нет.
5.6. Выполнение операций ввода-вывода над строками.
5.7. Чтение и запись сжатых файлов с данными.
5.8. Итерирование по записям фиксированного размера.
5.9. Чтение бинарных данных в изменяемый (мутабельный) буфер.
5.10. Отображаемые в память бинарные файлы.
5.11. Манипулирование путями к файлам.
5.12. Проверка существования файла.
5.13. Получение содержимого каталога.
5.14. Обход кодировки имен файлов.
5.15. Вывод «плохих» имен файлов.
5.16. Добавление или изменение кодировки уже открытого файла.
5.17. Запись байтов в текстовый файл.
5.18. Оборачивание существующего дескриптора файла для использования в качестве объекта файла.
5.19. Создание временных файлов и каталогов.
5.20. Работа с последовательными портами.
5.21. Сериализация объектов Python.
Глава 6. Кодирование и обработка данных.
6.1. Чтение и запись данных в формате CSV.
6.2. Чтение и запись в формате JSON.
6.3. Парсинг простых XML-данных.
6.4. Пошаговый парсинг очень больших XML-файлов.
6.5. Преобразование словарей в XML.
6.6. Парсинг, изменение и перезапись XML.
6.7. Парсинг XML-документов с пространствами имен.
6.8. Взаимодействие с реляционной базой данных.
6.9. Декодирование и кодирование шестнадцатеричных цифр.
6.10. Кодирование и декодирование в Base64.
6.11. Чтение и запись бинарных массивов структур.
6.12. Чтение вложенных и различных по размеру бинарных структур.
6.13. Суммирование данных и обсчет статистики.
Глава 7. Функции.
7.1. Определение функций, принимающих любое количество аргументов.
7.2. Определение функций, принимающих только именованные аргументы.
7.3. Прикрепление информационных метаданных к аргументам функций.
7.4. Возвращение функцией нескольких значений.
7.5. Определение функций с аргументами по умолчанию.
7.6. Определение анонимных функций или встроенных функций (inline).
7.7. Захват переменных в анонимных функциях.
7.8. Заставляем вызываемый объект с N аргументами работать так же, как вызываемый объект с меньшим количеством аргументов.
7.9. Замена классов с одним методом функциями.
7.10. Передача дополнительного состояния с функциями обратного вызова.
7.11. Встроенные функции обратного вызова.
7.12. Доступ к переменным, определенным внутри замыкания.
Глава 8. Классы и объекты.
8.1. Изменение строкового представления экземпляров.
8.2. Настройка строкового форматирования.
8.3. Создание объектов, поддерживающих протокол менеджера контекста.
8.4. Экономия памяти при создании большого количества экземпляров.
8.5. Инкапсуляция имен в классе.
8.6. Создание управляемых атрибутов.
8.7. Вызов метода родительского класса.
8.8. Расширение свойства в подклассе.
8.9. Создание нового типа атрибута класса или экземпляра.
8.10. Использование лениво вычисляемых свойств.
8.11. Упрощение инициализации структур данных.
8.12. Определение интерфейса или абстрактного базового класса.
8.13. Реализации модели данных или системы типов.
8.14. Реализация собственных контейнеров.
8.15. Делегирование доступа к атрибуту.
8.16. Определение более одного конструктора в классе.
8.17. Создание экземпляра без вызова init.
8.18. Расширение классов с помощью миксин (mixins).
8.19. Реализация объектов с состоянием или конечных автоматов.
8.20. Вызов метода объекта с передачей имени метода в строке.
8.21. Реализация шаблона проектирования «Посетитель».
8.22. Реализация шаблона «Посетитель» без рекурсии.
8.23. Управление памятью в циклических структурах данных.
8.24. Заставляем классы поддерживать операции сравнения.
8.25. Создание закешированных экземпляров.
Глава 9. Метапрограммирование.
9.1. Создание обертки для функции.
9.2. Сохранение метаданных функции при написании декораторов.
9.3. Снятие («разворачивание») декоратора.
9.4. Определение декоратора, принимающего аргументы.
9.5. Определение декоратора с настраиваемыми пользователем атрибутами.
9.6. Определение декоратора, принимающего необязательный аргумент.
9.7. Принудительная проверка типов в функции с использованием декоратора.
9.8. Определение декораторов как части класса.
9.9. Определение декораторов как классов.
9.10. Применение декораторов к методам класса и статическим методам.
9.11. Написание декораторов, которые добавляют аргументы обернутым функциям.
9.12. Использование декораторов для исправления определений классов.
9.13. Использование метакласса для управления созданием экземпляров.
9.14. Захват порядка определения атрибутов класса.
9.15. Определение метакласса, принимающего необязательные аргументы.
9.16. Принудительная установка аргументной сигнатуры при использовании *args и **kwargs. 362
9.17. Принуждение к использованию соглашений о кодировании в классах.
9.18. Программное определение классов.
9.19. Инициализация членов класса во время определения.
9.20. Реализация множественной диспетчеризации с помощью аннотаций функций.
9.21. Избежание повторяющихся методов свойств.
9.22. Легкий способ определения менеджеров контекста.
9.23. Выполнение кода с локальными побочными эффектами.
9.24. Парсинг и анализ исходного кода Python.
9.25. Дизассемблирование байт-кода Python.
Глава 10. Модули и пакеты.
10.1. Создание иерархического пакета модулей.
10.2. Контроль импортирования.
10.3. Импортирование подмодулей пакета с использованием относительных имен.
10.4. Разделение модуля на несколько файлов.
10.5. Создание отдельных каталогов с кодом для импорта под общим пространством имен.
10.6. Перезагрузка модулей.
10.7. Создание каталога или zip-архива, запускаемых как основной скрипт.
10.8. Чтение файлов с данными внутри пакета.
10.9. Добавление каталогов в sys.path.
10.10. Импортирование модулей с использованием имени, передаваемого в форме строки .
10.11. Загрузка модулей с удаленного компьютера с использованием хуков импортирования.
10.12. Применение к модулям изменений при импорте.
10.13. Установка пакетов «только для себя».
10.14. Создание нового окружения Python.
10.15. Распространение пакетов.
Глава 11. Сети и веб-программирование.
11.1. Взаимодействие с HTTP-сервисами в роли клиента.
11.2. Создание TCP-сервера.
11.3. Создание UDP-сервера.
11.4. Генерация диапазона IP-адресов из CIDR-адреса.
11.5. Создание простого REST-интерфейса.
11.6. Реализация простого удаленного вызова процедуры через XML-RPC.
11.7. Простое взаимодействие между интерпретаторами.
11.8. Реализация удаленного вызова процедур.
11.9. Простая аутентификация клиентов.
11.10. Добавление SSL в сетевые сервисы.
11.11. Передача файловых дескрипторов сокетов между процессами.
11.12. Разбираемся с вводом-выводом, управляемым событиями (event-driven I/0).
11.13. Отсылка и получение больших массивов.
Глава 12. Конкурентность.
12.1. Запуск и остановка потоков.
12.2. Как узнать, стартовал ли поток.
12.3. Коммуникация между потоками.
12.4. Блокировка критически важных участков.
12.5. Блокировка с избежанием дедлока.
12.6. Хранение специфичного состояния потока.
12.7. Создание пула потоков.
12.8. Простое параллельное программирование.
12.9. Разбираемся с GIL (и перестаем волноваться по этому поводу).
12.10. Определение акторной задачи.
12.11. Реализация системы сообщений «опубликовать/подписаться» (pub/sub).
12.12. Использование генераторов в качестве альтернативы потокам.
12.13. Опрашивание многопоточных очередей.
12.14. Запуск процесса-демона на Unix.
Глава 13. Полезные скрипты и системное администрирование.
13.1. Скрипты, принимающие ввод через перенаправление, каналы или файлы.
13.2. Завершение программы с выводом сообщения об ошибке.
13.3. Парсинг аргументов командной строки.
13.4. Запрос пароля во время выполнения.
13.5. Получение размера окна терминала.
13.6. Выполнение внешней команды и получение ее вывода.
13.7. Копирование или перемещение файлов и каталогов.
13.8. Создание и распаковка архивов.
13.9. Поиск файлов по имени.
13.10. Чтение конфигурационных файлов.
13.11. Добавление логирования в простые скрипты.
13.12. Добавление логирования в библиотеки.
13.13. Создание таймера-секундомера.
13.14. Установка лимитов на использование памяти и CPU.
13.15. Запуск браузера.
Глава 14. Тестирование, отладка и исключения.
14.1. Тестирование отправки вывода в stdout.
14.2. Изменение объектов в юнит-тестах.
14.3. Проверка вызывающих исключения условий в рамках юнит-тестов.
14.4. Логирование вывода теста в файл.
14.5. Пропуск или ожидание провалов тестов.
14.6. Обработка множественных исключений.
14.7. Ловим все исключения.
14.8. Создание собственных исключений.
14.9. Возбужение исключения в ответ на другое исключение.
14.10. Повторное возбуждение последнего исключения.
14.11. Вывод предупреждающих сообщений.
14.12. Отладка основных сбоев программы.
14.13. Профилирование и замеры времени выполнения вашей программы.
14.14. Заставляем ваши программы выполняться быстрее.
Глава 15. Расширения на языке C.
15.1. Доступ к коду на C с использованием ctypes.
15.2. Написание простого модуля расширения на C.
15.3. Написание функции расширения для работы с массивами.
15.4. Управление непрозрачными указателями в модулях расширения на C.
15.5. Определение и экспортирование С API из модулей расширения.
15.6. Вызываем Python из С.
15.7. Освобождение GIL в расширениях на C.
15.8. Объединение потоков из C и Python.
15.9. Оборачивание кода на C в Swig.
15.10. Оборачивание существующего кода на C в Cython.
15.11. Использование Cython для высокопроизводительных операций над массивами.
15.12. Превращение указателя на функцию в вызываемый объект.
15.13. Передача строк с нулевым символом библиотекам на C.
15.14. Передача строк Unicode в библиотеки на C.
15.15. Преобразование строк C в Python.
15.16. Работа со строками C в сомнительной кодировке.
15.17. Передача имен файлов в расширения на С.
15.18. Передача открытых файлов в расширения на С.
15.19. Чтение файлоподобных объектов из C.
15.20. Потребление итерируемого объекта из С.
15.21. Диагностика ошибок сегментации.
Приложение А. Для дальнейшего изучения.
Веб-сайты.
Книги, посвященные языку Python.
Книги для углубленного изучения Python.
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «ЛитРес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Теги: учебник по программированию :: программирование :: Бизли :: Джонс
Смотрите также учебники, книги и учебные материалы:
- Прагматичный ИИ, Машинное обучение и облачные технологии, Гифт Н., 2019
- Вероятностное программирование на Python, Байесовский вывод и алгоритмы, Дэвидсон-Пайлон К., 2019
- Введение в машинное обучение с помощью Python, Мюллер А., Гвидо С., 2017
- Секреты Python, 59 рекомендаций по написанию эффективного кода, Слаткин Б., 2016
- Алгоритмы для начинающих, теория и практика для разработчика, Луридас П., 2018
- Swift, Основы разработки приложений под iOS и macOS, Усов В., 2018
- Spring, Все паттерны проектирования, Раджпут Д., 2019
- React быстро, Веб-приложения на React, JSX, Redux и GraphQL, Мардан А., 2019