Книга ориентирована на читателей, имеющих базовый опыт программирования на языке Python и желающих быстро научиться применять его в реальных проектах или изучить Python в качестве второго языка. Рассмотрен широкий круг тем от соблюдения чистоты кода и грамотного именования функций и переменных, до проектирования API, правил объектно-ориентированного программирования, обеспечения безопасности (аутентификация, авторизация) и взаимодействия с базами данных. Затронут широкий круг вопросов, связанных с программированием модулей на Python, автоматизацией задач, использования веб-фреймворков, в частности Flask.
Для программистов на Python
Разработка приложений с Python и Flask
Программисту-новичку не терпится увидеть, как его код заработает. В свою очередь, разработчик-профессионал обязан писать софт, который был бы максимально надёжен. Хороший код должен работать быстро, легко масштабироваться, не доставлять проблем с поддержкой. Наконец, код должен быть безопасен, качественно спроектирован и документирован, его должно быть легко обновлять и версионировать.
Эта книга поможет вам пройти путь от начинающего Python-программиста до уверенного Python-разработчика.
Книга помогает понять, почему Python – самый популярный язык в мире – необыкновенно хорош для профессиональной разработки. Работая с этим языком, легко приобрести важные профессиональные навыки – научиться именовать переменные, функции и классы, продумывать и писать качественные API, пользоваться объектами. Также в ней объяснено, как справляться с неизбежными отказами, в особенности сетевыми, соблюдать ключевые правила обеспечения безопасности, подключаться к базам данных и научиться профессионально решать конкретные задачи в рамках больших проектов на Python.
Значительная часть книги посвящена Python-фреймворку Flask, упрощающему и ускоряющему серверную веб-разработку на Python, поддерживающему создание статических веб-страниц и способствующему интеграции серверной и клиентской частей веб-приложения.
Книгу “Python. Как стать профессионалом” можно купить со скидкой в интернет-магазине издательства “БХВ“.
Предисловие. 13
Введение. 15
Благодарности. 17
Об этой книге. 19
Для кого предназначена данная книга. 19
Структура книги: ее дорожная карта. 20
О коде. 22
Об авторе. 23
Глава 1. Становление питониста. 25
1.1. Стремление к обучению.. 26
1.2. Достижение целей. 27
1.2.1. Стиль мышления разработчика. 27
1.2.2. Создание приложений. 28
1.3. Использование языка Python. 28
1.3.1. Парадигмы программирования. 28
1.3.2. Создание сопровождаемого кода. 29
1.3.3. Производительность. 30
1.3.4. Сообщество приверженцев языка. 32
1.3.5. Инструментарий разработчика. 33
1.4. Выбор используемой версии Python. 34
1.5. Заключительные размышления. 35
1.6. Резюме. 35
Часть I. Закладка фундамента. 37
Глава 2. Подходящие имена. 39
2.1. Имена. 39
2.1.1. Присвоение имен. 41
2.1.2. Эксперимент по присвоению имен. 44
2.2. Пространства имен. 46
2.3. Пространства имен в языке Python. 47
2.3.1. Уровень встроенных модулей. 48
2.3.2. Уровень модуля. 49
2.3.3. Уровень функций. 53
2.3.4. Область видимости пространства имен. 54
2.3.5. Эксперимент с пространством имен. 56
2.4. Резюме. 60
Глава 3. API: давайте пообщаемся. 61
3.1. Начало разговора. 62
3.1.1. Соглашение, заключаемое между частями кода. 63
3.1.2. Что передается в качестве входных данных. 64
3.1.3. Что ожидается на выходе. 66
3.2. Работа API 69
3.2.1. Именование. 69
3.2.2. Параметры. 70
3.2.3. Возвращаемое значение. 73
3.2.4. Единственная ответственность. 73
3.2.5. Длина функции. 74
3.2.6. Идемпотентность. 75
3.2.7. Побочные эффекты. 75
3.3. Документация. 77
3.4. Заключительные размышления. 78
3.5. Резюме. 78
Глава 4. Объект разговора. 80
4.1. Объектно-ориентированное программирование. 80
4.1.1. Определение класса. 81
4.1.2. Рисование с помощью класса. 83
4.1.3. Наследование. 94
4.1.4. Полиморфизм. 102
4.1.5. Композиция. 103
4.2. Заключительные размышления. 107
4.3. Резюме. 107
Глава 5. Исключительные события. 109
5.1. Исключения. 111
5.2. Обработка исключений. 113
5.2.1. Обработка исключения, если код способен как-то исправить ситуацию.. 114
5.2.2. Предоставление исключениям возможности перемещаться вверх
по коду ваших программ. 114
5.2.3. Информирование пользователя. 115
5.2.4. Не стоит замалчивать исключения. 115
5.3. Выдача исключений. 120
5.4. Создание пользовательских исключений. 121
5.5. Заключительные размышления. 124
5.6. Резюме. 124
Часть II. Работа над конкретным заданием.. 125
Глава 6. Обмен информацией по Интернету. 127
6.1. Делитесь своей работой с другими. 127
6.1.1. Преимущества веб-приложений. 128
6.1.2. Сложности, связанные с использованием веб-приложений. 128
6.2. Серверы. 129
6.2.1. Модель “запрос — ответ”. 130
6.3. Веб-серверы. 131
6.4. Flask. 134
6.4.1. Почему именно Flask?. 134
6.4.2. Ваш первый веб-сервер. 135
6.4.3. Обслуживание содержимого. 138
6.4.4. Дополнительные функции Jinja2. 141
6.5. Запуск веб-сервера. 153
6.5.1. Gunicorn. 154
6.5.2. Коммерческий хостинг. 154
6.6. Заключительные размышления. 155
6.7. Резюме. 155
Глава 7. Работа со стилем.. 157
7.1. Стилизация приложения. 157
7.1.1. Создание привлекательных стилей. 158
7.1.2. Согласованность стилей. 158
7.1.3. Нормализация стилей. 159
7.1.4. Адаптивный дизайн. 159
7.2. Встраивание Bootstrap. 160
7.2.1. Предыдущий пример, теперь с Bootstrap. 160
7.3. Помощь в развитии приложения MyBlog. 169
7.3.1. Экземпляр приложения Flask. 169
7.4. Пространства имен. 174
7.4.1. Flask Blueprints 174
7.4.2. Добавление Blueprints в MyBlog. 175
7.4.3. Создание страницы “О сайте”. 179
7.4.4. Реструктуризированный app-экземпляр. 181
7.5. Навигация. 181
7.5.1. Создание навигационной информации. 182
7.5.2. Отображение навигационной информации. 183
7.5.3. Текущий вид MyBlog. 184
7.6. Конфигурация приложения. 186
7.6.1. Файлы конфигурации. 186
7.6.2. Закрытая информация. 186
7.7. Панель инструментов отладки Flask. 187
7.7.1. FlaskDynaConf 187
7.8. Регистрационная информация. 192
7.8.1. Конфигурация. 192
7.9. Добавление фавикона. 196
7.10. Заключительные размышления. 198
7.11. Резюме. 198
Глава 8. А я тебя знаю? Аутентификация. 200
8.1. Протокол HTTP, не имеющий состояния. 200
8.1.1. Сессии. 201
8.2. Запоминание пользователя. 202
8.2.1. Аутентификация. 203
8.2.2. Вход в систему. 213
8.3. Экстренные сообщения. 219
8.3.1. Усовершенствование формы входа. 220
8.4. Расширение круга друзей. 223
8.4.1. Blueprint-схема аутентификации. 224
8.4.2. Новая форма для пользователя. 225
8.4.3. Ах да: выход из системы. 228
8.5. Что дальше. 229
8.6. Резюме. 229
Глава 9. Какие действия вам разрешены? Авторизация. 230
9.1. Переход ко входу и выходу. 230
9.2. Подтверждение новых друзей. 232
9.2.1. Отправка электронной почты. 233
9.3. Сброс паролей. 239
9.4. Профили пользователей. 243
9.5. Безопасность. 246
9.5.1. Защита маршрутов. 246
9.6. Роли пользователей, задаваемые авторизацией. 247
9.6.1. Создание ролей. 247
9.6.2. Авторизация маршрутов. 250
9.7. Защита форм. 253
9.8. Заключительные размышления. 253
9.9. Резюме. 254
Глава 10. Выгоды от постоянства: базы данных. 255
10.1. Вторая половина дела. 255
10.1.1. Долговременное хранение информации. 256
10.2. Доступ к данным. 256
10.3. Системы управления базами данных. 262
10.3.1. Таблицы. 262
10.3.2. Отношения. 263
10.3.3. База данных транзакций. 266
10.3.4. Язык структурированных запросов SQL. 268
10.4. Использование SQLite в качестве базы данных. 271
10.5. SQLAlchemy. 271
10.5.1. Преимущества. 272
10.6. Моделирование базы данных. 272
10.6.1. Определение классов. 273
10.7. Создание и использование базы данных. 277
10.7.1. Добавление данных. 277
10.7.2. Использование данных. 280
10.8. Заключительные размышления. 283
10.9. Резюме. 283
Глава 11. Мне есть что сказать. 285
11.1. Публикации в MyBlog. 285
11.1.1. Моделирование баз данных. 286
11.2. Изменение порядка изложения материала. 289
11.3. Blueprint-схема контента. 289
11.4. Отображение и создание публикаций. 290
11.4.1. Обработчик отображения. 290
11.4.2. Шаблон отображения. 291
11.5. Создание публикаций. 292
11.5.1. Обработчик создания. 292
11.5.2. Форма создания. 293
11.5.3. Шаблон создания. 294
11.6. Отображение и редактирование публикации. 295
11.6.1. Обработчик отображения. 295
11.6.2. Шаблон отображения. 296
11.6.3. Обработчик обновления. 298
11.6.4. Форма обновления. 299
11.6.5. Шаблон обновления. 300
11.7. Иерархия контента для комментариев. 301
11.7.1. Изменение класса сообщения. 304
11.7.2. Обработчик отображения. 305
11.7.3. Шаблон отображения. 308
11.8. Создание комментариев. 310
11.8.1. Шаблон создания. 310
11.8.2. Форма создания. 311
11.8.3. Обработчик создания. 311
11.9. Уведомление пользователей. 312
11.10. Обработка ошибок сайта. 314
11.11. Заключительные размышления. 317
11.12. Резюме. 317
Глава 12. И что, на этом всё?. 319
12.1. Тестирование. 319
12.1.1. Модульное тестирование. 320
12.1.2. Функциональное тестирование. 321
12.1.3. Сквозное тестирование. 321
12.1.4. Интеграционное тестирование. 321
12.1.5. Нагрузочное тестирование. 321
12.1.6. Тестирование производительности. 321
12.1.7. Регрессионное тестирование. 322
12.1.8. Тестирование доступности. 322
12.1.9. Приемочное тестирование. 322
12.2. Отладка. 323
12.2.1. Воспроизведение ошибок. 323
12.2.2. Точки останова. 323
12.2.3. Ведение журнала. 324
12.2.4. Неприемлемые результаты. 324
12.2.5. Процесс исключения. 325
12.2.6. Проговаривание проблемы. 325
12.3. Инструменты. 325
12.3.1. Управление исходным кодом. 325
12.3.2. Оптимизация. 326
12.3.3. Контейнеры. 327
12.3.4. Базы данных. 327
12.3.5. Языки. 328
12.4. Среды операционных систем. 329
12.5. Облачные вычисления. 329
12.6. Сеть. 330
12.7. Сотрудничество. 330
12.8. Заключительные размышления. 331
12.9. Резюме. 331
Приложение. Ваша среда разработки. 333
П1. Установка Python. 333
П1.1. Windows 334
П1.2. Mac. 334
П1.3. Linux. 335
П2. Виртуальная среда Python. 336
П2.1. Windows 337
П2.2. Mac и Linux. 338
П3. Настройка Visual Studio Code. 339
П3.1. Установка Visual Studio Code. 339
П3.2. Установка Python-расширения. 340
П3.3. Другие полезные расширения. 340
П3.4. Запуск из командной строки. 341
П3.5. Запуск проекта. 341
П4. Ряд полезных советов. 343
Предметный указатель. 345
-
НОВИНКА
Python. Как стать профессионалом
1000 ₽
820 ₽
Дуг Фаррелл (Doug Farrell) занимается разработкой программных средств с 1983 года, хотя имеет степени бакалавра по двум явно смежным областям — по физике и по прикладному искусству. Дуг — программист-самоучка, на протяжении многих лет использовавший немало языков во многих отраслях: Pascal, Fortran, C/C++, PHP, Python и JavaScript. С Python он работает с 2000 года, а с 2006 года Python стал его основным языком. Дуг написал множество статей для RealPython.com. Он также преподавал в центре STEM, где использовалась существенная часть материалов разработанного им обучающего курса.