ОГЛАВЛЕНИЕ....7
ПРЕДИСЛОВИЕ....10
ВВЕДЕНИЕ....12
Благодарности....15
ГЛАВА 1. Порождающие паттерны проектирования в Python....17
1.1. Паттерн Абстрактная фабрика....17
1.1.1. Классическая Абстрактная фабрика....18
1.1.2. Абстрактная фабрика в духе Python....21
1.2. Паттерн Построитель....23
1.3. Паттерн Фабричный метод....29
1.4. Паттерн Прототип....38
1.5. Паттерн Одиночка....39
ГЛАВА 2. Структурные паттерны проектирования в Python....41
2.1. Паттерн Адаптер....41
2.2. Паттерн Мост....47
2.3. Паттерн Компоновщик....53
2.3.1. Классическая иерархия составных и несоставных объектов....54
2.3.2. Единый класс для составных и несоставных объектов....58
2.4. Паттерн Декоратор....61
2.4.1. Декораторы функций и методов....62
2.4.2. Декораторы классов....68
2.5. Паттерн Фасад....75
2.6. Паттерн Приспособленец....80
2.7. Паттерн Заместитель....83
ГЛАВА 3. Поведенческие паттерны проектирования в Python....89
3.1. Паттерн Цепочка ответственности....89
3.1.1. Традиционная Цепочка....90
3.1.2. Цепочка на основе сопрограмм....92
3.2. Паттерн Команда....96
3.3. Паттерн Интерпретатор....100
3.3.1. Вычисление выражения с помощью eval()....101
3.3.2. Исполнение кода с помощью exec()....105
3.3.3. Исполнение кода в подпроцессе....108
3.4. Паттерн Итератор....113
3.4.1. Итераторы, следующие протоколу последовательности....113
3.4.2. Реализация итераторов с помощью функции iter() с двумя аргументами....114
3.4.3. Итераторы на базе протокола итераторов....116
3.5. Паттерн Посредник....119
3.5.1. Традиционный Посредник....120
3.5.2. Посредник на основе сопрограмм....124
3.6. Паттерн Хранитель....126
3.7. Паттерн Наблюдатель....126
3.8. Паттерн Состояние....131
3.8.1. Чувствительные к состоянию методы....134
3.8.2. Определяемые состоянием методы....136
3.9. Паттерн Стратегия....137
3.10. Паттерн Шаблонный метод....140
3.11. Паттерн Посетитель....143
3.12. Пример: пакет обработки изображений....145
3.12.1. Общий модуль обработки изображений....147
3.12.2. Обзор модуля Xpm....157
3.12.3. Модуль-обертка PNG....160
ГЛАВА 4. Высокоуровневый параллелизм в Python....163
4.1. Распараллеливание задач с большим объемом вычислений....167
4.1.1. Очереди и многопроцессная обработка....170
4.1.2. Будущие объекты и многопроцессная обработка....176
4.2. Распараллеливание задач, ограниченных скоростью ввода-вывода....179
4.2.1. Очереди и многопоточность....181
4.2.2. Будущие объекты и многопоточность....186
4.3. Пример: приложение с параллельным ГИП....189
4.3.1. Создание ГИП....191
4.3.2. Модуль ImageScaleWorker....199
4.3.3. Как ГИП обрабатывает продвижение....202
4.3.4. Как ГИП обрабатывает выход из программы....204
ГЛАВА 5. Расширение Python....206
5.1. Доступ к написанным на C библиотекам с помощью пакета ctypes....208
5.2. Использование Cython....216
5.2.1. Доступ к написанным на C библиотекам с помощью Cython....216
5.2.2. Создание Cython-модулей для повышения производительности....223
5.3. Пример: ускоренная версия пакета Image....229
ГЛАВА 6. Высокоуровневое сетевое программирование на Python....234
6.1. Создание приложений на базе технологии XML-RPC....235
6.1.1. Обертка данных....236
6.1.2. Разработка сервера XML-RPC....240
6.1.3. Разработка клиента XML-RPC....242
6.2. Создание приложений на базе технологии RPyC....252
6.2.1. Потокобезопасная обертка данных....252
6.2.2. Разработка сервера RPyC....258
6.2.3. Разработка клиента RPyC....261
ГЛАВА 7. Графические интерфейсы пользователя на Python и Tkinter....265
7.1. Введение в Tkinter....268
7.2. Создание диалоговых окон с помощью Tkinter....270
7.2.1. Создание диалогового приложения....272
7.2.2. Создание диалоговых окон в приложении....281
7.3. Создание приложений с главным окном с помощью Tkinter....291
7.3.1. Создание главного окна....293
7.3.2. Создание меню....295
7.3.3. Создание строки состояния с индикаторами....298
ГЛАВА 8. Трехмерная графика на Python с применением OpenGL....302
8.1. Сцена в перспективной проекции....304
8.1.1. Создание программы Cylinder с помощью PyOpenGL....305
8.1.2. Создание программы Cylinder с помощью pyglet....310
8.2. Игра в ортографической проекции....312
8.2.1. Рисование сцены с доской....315
8.2.2. Обработка выбора объекта на сцене....318
8.2.3. Обработка взаимодействия с пользователем....320
ПРИЛОЖЕНИЕ A. Эпилог....324
ПРИЛОЖЕНИЕ B. Краткая библиография....326
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ....330
Если вы – опытный программист на Python, то после прочтения данной книги ваши программы станут более качественными, надежными, быстрыми, удобными для сопровождения и использования.
В центре внимания Марка Саммерфилд находятся четыре основных темы: повышение элегантности кода с помощью паттернов проектирования, повышения быстродействия с помощью распараллеливания и компиляции Python-программ (Cython), высокоуровневое сетевое программирование и графика. Он описывает паттерны, доказавшие свою полезность в Python, иллюстрирует их на примерах высококачественного кода и объясняет, почему некоторые из них не слишком существенны.
Издание предназначено для программистов, уже работающих на Python, но также может быть полезно и начинающим пользователям языка.