Python на практике, Марк Саммерфилд, 2016.
Если вы - опытный программист на Python, то после прочтения данной книги ваши программы станут более качественными, надежными, быстрыми, удобными для сопровождения и использования.
В центре внимания Марка Саммерфилда находятся четыре основных темы: повышение элегантности кода с помощью паттернов проектирования, повышения быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика. Он описывает паттерны, доказавшие свою полезность в Python, иллюстрирует их на примерах высококачественного кода и объясняет, почему некоторые из них не слишком существенны.
Издание предназначено для программистов, уже работающих на Python, но также может быть полезно и начинающим пользователям языка.
Абстрактная фабрика в духе Python.
Класс DiagramFactory, его подкласс SvgDiagramFactory, а также классы, которые в них используются (Diagram, SvgDiagram и т. д.), прекрасно работают в полном соответствии с паттерном проектирования.
Тем не менее, у нашей реализации есть несколько недостатков. Во-первых, ни у одной фабрики нет собственного состояния, поэтому и создавать экземпляры фабрики по сути дела ни к чему. Во-вторых, код SvgDiagramFactory отличается от кода DiagramFactory только тем, что возвращает объекты типа SvgText, а не Text и т. д. - таким образом, налицо ненужное дублирование. В-третьих, в пространстве имен верхнего уровня находятся все классы: DiagramFactory, Diagram, Rectangle, Text и их SVG-эквиваленты. Но на самом деле нам нужен доступ только к двум фабрикам. Далее, мы вынуждены добавлять к именам классов префикс SVG (например, SvgRectangle вместо Rectangle), чтобы избежать конфликта имен, а это некрасиво. (Для устранения конфликта имен можно было бы поместить каждый класс в свой модуль. Но это не решает проблему дублирования кода.).
Содержание.
Предисловие.
Введение.
Благодарности.
Глава 1. Порождающие паттерны проектирования в Python.
1.1. Паттерн Абстрактная фабрика.
1.1.1. Классическая Абстрактная фабрика.
1.1.2. Абстрактная фабрика в духе Python.
1.2. Паттерн Построитель.
1.3. Паттерн Фабричный метод.
1.4. Паттерн Прототип.
1.5. Паттерн Одиночка.
Глава 2. Структурные паттерны проектирования в Python.
2.1. Паттерн Адаптер.
2.2. Паттерн Мост.
2.3. Паттерн Компоновщик.
2.3.1. Классическая иерархия составных и несоставных объектов.
2.3.2. Единый класс для составных и несоставных объектов.
2.4. Паттерн Декоратор.
2.4.1. Декораторы функций и методов.
2.4.2. Декораторы классов.
2.5. Паттерн Фасад.
2.6. Паттерн Приспособленец.
2.7. Паттерн Заместитель.
Глава 3. Поведенческие паттерны проектирования в Python.
3.1. Паттерн Цепочка ответственности.
3.1.1. Традиционная Цепочка.
3.1.2. Цепочка на основе сопрограмм.
3.2. Паттерн Команда.
3.3. Паттерн Интерпретатор.
3.3.1. Вычисление выражения с помощью eval().
3.3.2. Исполнение кода с помощью ехес().
3.3.3. Исполнение кода в подпроцессе.
3.4. Паттерн Итератор.
3.4.1. Итераторы, следующие протоколу последовательности.
3.4.2. Реализация итераторов с помощью функции iter() с двумя аргументами.
3.4.3. Итераторы на базе протокола итераторов.
3.5. Паттерн Посредник.
3.5.1. Традиционный Посредник.
3.5.2. Посредник на основе сопрограмм.
3.6. Паттерн Хранитель.
3.7. Паттерн Наблюдатель.
3.8. Паттерн Состояние.
3.8.1. Чувствительные к состоянию методы.
3.8.2. Определяемые состоянием методы.
3.9. Паттерн Стратегия.
3.10. Паттерн Шаблонный метод.
3.11. Паттерн Посетитель.
3.12. Пример: пакет обработки изображений.
3.12.1. Общий модуль обработки изображений.
3.12.2. Обзор модуля Хрm.
3.12.3. Модуль-обертка PNG.
Глава 4.Высокоуровневый параллелизм в Python.
4.1. Распараллеливание задач с большим объемом вычислений.
4.1.1. Очереди и многопроцессная обработка.
4.1.2. Будущие объекты и многопроцессная обработка.
4.2. Распараллеливание задач, ограниченных скоростью ввода-вывода.
4.2.1. Очереди и многопоточность.
4.2.2. Будущие объекты и многопоточность.
4.3. Пример: приложение с параллельным ГИП.
4.3.1. Создание ГИП.
4.3.2. Модуль ImageScaleWorker.
4.3.3. Как ГИП обрабатывает продвижение.
4.3.4. Как ГИП обрабатывает выход из программы.
Глава 5. Расширение Python.
5.1. Доступ к написанным на С библиотекам с помощью пакета ctypes.
5.2. Использование Cython.
5.2.1. Доступ к написанным на С библиотекам с помощью Cython.
5.2.2. Создание Cython-модулей для повышения производительности.
5.3. Пример: ускоренная версия пакета Image.
Глава 6. Высокоуровневое сетевое программирование на Python.
6.1. Создание приложений на базе технологии XML- RPC.
6.1.1. Обертка данных.
6.1.2. Разработка сервера XML-RPC.
6.1.3. Разработка клиента XML-RPC.
6.2. Создание приложений на базе технологии RPyC.
6.2.1. Потокобезопасная обертка данных.
6.2.2. Разработка сервера RPyC.
6.2.3. Разработка клиента RPyC.
Глава 7. Графические интерфейсы пользователя на Python и Tkinter.
7.1. Введение в Tkinter.
7.2. Создание диалоговых окон с помощью Tkinter.
7.2.1. Создание диалогового приложения.
7.2.2. Создание диалоговых окон в приложении.
7.3. Создание приложений с главным окном с помощью Tkinter.
7.3.1. Создание главного окна.
7.3.2. Создание меню.
7.3.3. Создание строки состояния с индикаторами.
Глава 8. Трехмерная графика на Python с применением OpenGL.
8.1. Сцена в перспективной проекции.
8.1.1. Создание программы Cylinder с помощью PyOpenGL.
8.1.2. Создание программы Cylinder с помощью pyglet.
8.2. Игра в ортографической проекции.
8.2.1. Рисование сцены с доской.
8.2.2. Обработка выбора объекта на сцене.
8.2.3. Обработка взаимодействия с пользователем.
Приложение А. Эпилог.
Приложение В. Краткая библиография.
Предметный указатель.
Купить .
Теги: учебник по программированию :: программирование :: Марк Саммерфилд
Смотрите также учебники, книги и учебные материалы:
- Построение систем машинного обучения на языке Python, Луис П.К., Вилли Р., 2016
- Head First, Паттерны проектирования, Обновленное юбилейное издание, Фримен Э., Робсон Э., Сьерра К., Бейтс Б., 2018
- Разработка операционной системы и компилятора, проект Оберон, Вирт Н., Гуткнехт Ю., 2012
- Python, Разработка на основе тестирования, Персиваль Г., 2018
- Java в облаке, Spring Boot, Spring Cloud, Cloud Foundry, Лонг Д., Бастани К., 2019
- Анализ социальных медиа на Python, Логунова А.В., Бонцанини М., 2018
- Python 3, самое необходимое, Прохоренок Н.А., Дронов В.А., 2019
- Погружение в Python 3, Пилигрим М.