
В книге 22 урока, более 40 практических упражнений и заданий для самостоятельной работы. Описан язык Python: его основы, типы данных, управляющие выражения, функции, объекты, классы, исключения, модули и пакеты. Рассмотрены более развитые инструменты языка: установка и применение дополнительных библиотек, многопоточное, многопроцессное и конкурентное программирование, аннотации типов. Рассказано о практическом применении Python и различных библиотек для загрузки данных из Интернета, парсинга веб-страниц, работы с базами данных, программирования графических и веб-приложений, математических расчетов, вывода графиков и работы с искусственным интеллектом. Электронный архив на сайте издательства содержит все примеры из книги.
Для начинающих программистов
Ваш путь от новичка к Python-разработчику начинается здесь!
Перед вами — идеальный старт в мир программирования!
Книга Владимира Дронова, автора более 50 популярных компьютерных руководств, написана специально для тех, кто делает первые шаги в коде. Она превратит сложные концепции в понятные и наглядные уроки, не перегружая лишней теорией.
22 урока, 40+ практических упражнений — и вы с нуля освоите мощный язык Python, на котором создаются веб-сайты, приложения, аналитические инструменты и решения с искусственным интеллектом.
Чему вы научитесь:
- Писать чистый и эффективный код на Python с самого начала.
- Работать с базами данных, парсить информацию из интернета и строить графики.
- Создавать графические приложения и основы веб-разработки.
- Использовать многопоточность для решения сложных задач.
- Интегрировать возможности искусственного интеллекта в свои проекты.
Почему именно эта книга?
- Проверенный автор: Владимир Дронов — практикующий программист с 1987 года, умеющий объяснять просто о сложном.
- Структура «от простого к сложному»: Пошаговые уроки и задания для закрепления материала.
- Практика с первого дня: Все примеры из книги доступны в электронном архиве для скачивания.
- Актуальность: Рассмотрены современные подходы, включая аннотации типов, конкурентное программирование и работу с AI.
Для кого эта книга:
- Для абсолютных новичков в программировании.
- Для студентов IT-направлений, ищущих понятное пособие.
- Для специалистов из других областей, желающих автоматизировать задачи.
- Для всех, кто хочет освоить востребованный язык и открыть двери в мир разработки.

Дронов Владимир Александрович, профессиональный программист, писатель и журналист, работает с компьютерами с 1987 года. Автор более 30 популярных компьютерных книг, в том числе «Django 2.1. Практика создания веб-сайтов на Python», “HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера“, «Python 3. Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», “Laravel. Быстрая разработка современных динамических Web-сайтов на PHP, MySQL, HTML и CSS“, “Angular 4. Быстрая разработка сверхдинамических Web-сайтов на TypeScript и PHP” и книг по продуктам Adobe Flash и Adobe Dreamweaver различных версий. Его статьи публикуются в журналах “Мир ПК” и “ИнтерФейс” (Израиль) и интернет-порталах “IZ City” и “TheVista.ru”.
Книгу “Python. Уроки для начинающих” можно купить в нашем интенет-магазине.
Предисловие…………………………………………………………………………………………… 13
Почему именно Python?…………………………………………………………………………………………………………….. 13
Почему эта книга?……………………………………………………………………………………………………………………… 14
Использованные программные продукты……………………………………………………………………………….. 14
Типографские соглашения………………………………………………………………………………………………………… 15
Часть I. Язык Python: основные инструменты………………….. 17
Урок 1. Введение в Python, часть 1…………………………………………………………. 19
1.1. Интерактивный режим Python……………………………………………………………………………………………. 19
1.2. Операторы. Приоритет операторов. Скобки……………………………………………………………………. 20
1.3. Функции……………………………………………………………………………………………………………………………….. 23
1.4. Переменные. Присваивание……………………………………………………………………………………………….. 24
1.5. Типы данных……………………………………………………………………………………………………………………….. 26
1.5.1. Числа — целые и вещественные………………………………………………………………………………. 26
1.5.2. Строки………………………………………………………………………………………………………………………… 27
1.5.3. Списки………………………………………………………………………………………………………………………… 28
1.5.4. Кортежи……………………………………………………………………………………………………………………… 29
1.5.5. Словари……………………………………………………………………………………………………………………… 29
1.6. Стандартная библиотека. Модули. Импорт…………………………………………………………………….. 30
1.7. Объекты и классы……………………………………………………………………………………………………………….. 32
1.7.1. Введение в объекты и классы…………………………………………………………………………………… 32
1.7.2. Объектная природа Python………………………………………………………………………………………. 33
1.8. Программные ошибки и сообщения о них………………………………………………………………………… 34
1.9. Что еще следует знать о Python в целом, часть 1…………………………………………………………….. 35
Урок 2. Введение в Python, часть 2…………………………………………………………. 38
2.1. Работа с данными разных типов……………………………………………………………………………………….. 38
2.1.1. Выяснение типа данных, к которому относится значение……………………………………. 38
2.1.2. Преобразование значения в другой тип данных……………………………………………………. 39
2.2. Написание программ на Python………………………………………………………………………………………… 39
2.2.1. Ввод данных……………………………………………………………………………………………………………… 40
2.2.2. Вывод данных…………………………………………………………………………………………………………… 40
2.2.3. Написание программ в среде IDLE Shell………………………………………………………………… 41
2.2.4. Альтернативные инструменты для написания программ……………………………………… 44
2.2.5. Комментарии…………………………………………………………………………………………………………….. 45
2.2.6. Правила набора программного кода на Python…………………………………………………….. 45
2.2.7. Сообщения об ошибках в коде программ……………………………………………………………….. 47
2.3. Что еще следует знать о Python в целом, часть 2…………………………………………………………….. 47
Урок 3. Логический тип данных, управляющие выражения и блоки…….. 49
3.1. Логический тип данных……………………………………………………………………………………………………… 49
3.1.1. Введение в логический тип. Операторы сравнения. Условия……………………………….. 49
3.1.2. Логические операторы……………………………………………………………………………………………… 50
3.2. Выражение ветвления…………………………………………………………………………………………………………. 51
3.3. Блоки. Пустой оператор…………………………………………………………………………………………………….. 53
3.3.1. Как набираются выражения, содержащие блоки?………………………………………………… 54
3.4. Выражение выбора…………………………………………………………………………………………………………….. 55
3.5. Циклы. Цикл с условием……………………………………………………………………………………………………… 56
3.6. Управление циклами…………………………………………………………………………………………………………… 58
3.6.1. Переход на следующую итерацию…………………………………………………………………………. 58
3.6.2. Прерывание цикла…………………………………………………………………………………………………….. 58
3.7. Автоматическое преобразование типов в условиях управляющих выражений…………… 59
3.8. Оператор присваивания в составе выражения…………………………………………………………………. 59
3.9. Что еще следует знать о блоках и не только…………………………………………………………………….. 60
3.10. Самостоятельные упражнения………………………………………………………………………………………… 61
Урок 4. Числа и строки………………………………………………………………………….. 62
4.1. Числа — целые и вещественные………………………………………………………………………………………… 62
4.1.1. Запись чисел……………………………………………………………………………………………………………… 62
4.1.2. Преобразование значений в числа………………………………………………………………………….. 63
4.1.3. Обработка чисел……………………………………………………………………………………………………….. 64
4.1.3.1. Арифметические операции…………………………………………………………………………. 64
4.1.3.2. Алгебраические и тригонометрические операции……………………………………. 65
4.1.3.3. Генерирование псевдослучайных чисел…………………………………………………… 66
4.1.4. Сравнение чисел……………………………………………………………………………………………………….. 67
4.1.5. Потери точности при вычислении…………………………………………………………………………… 68
4.2. Строки………………………………………………………………………………………………………………………………….. 68
4.2.1. Создание строк………………………………………………………………………………………………………….. 68
4.2.1.1. Специальные символы………………………………………………………………………………… 69
4.2.2. Преобразование значений в строки………………………………………………………………………… 70
4.2.3. Обработка строк……………………………………………………………………………………………………….. 70
4.2.3.1. Извлечение символов, срезов и перебор. Цикл перебора…………………………. 70
4.2.3.2. Простейшие операции над строками…………………………………………………………. 72
4.2.3.3. Преобразование строк………………………………………………………………………………… 72
4.2.3.4. Поиск и замена в строках……………………………………………………………………………. 74
4.2.4. Сравнение строк……………………………………………………………………………………………………….. 75
4.2.5. Форматируемые строки……………………………………………………………………………………………. 75
4.3. Последовательности…………………………………………………………………………………………………………… 78
4.4. Что еще нужно знать о строках и не только……………………………………………………………………… 79
4.5. Самостоятельные упражнения………………………………………………………………………………………….. 81
Урок 5. Списки, кортежи, генераторы и словари……………………………………. 82
5.1. Списки………………………………………………………………………………………………………………………………….. 82
5.1.1. Создание списков……………………………………………………………………………………………………… 82
5.1.2. Обработка списков……………………………………………………………………………………………………. 82
5.1.2.1. Простейшие операции над списками…………………………………………………………. 82
5.1.2.2. Добавление и удаление элементов списка………………………………………………… 84
5.1.2.3. Обработка элементов списка……………………………………………………………………… 85
5.1.2.4. Поиск элементов в списках…………………………………………………………………………. 86
5.1.2.5. Выдача элементов списков, выбранных псевдослучайным образом…….. 87
5.1.3. Сравнение списков……………………………………………………………………………………………………. 88
5.1.4. Списковые включения………………………………………………………………………………………………. 88
5.2. Кортежи……………………………………………………………………………………………………………………………….. 89
5.2.1. Создание кортежей…………………………………………………………………………………………………… 89
5.2.2. Работа с кортежами………………………………………………………………………………………………….. 89
5.2.3. Именованные кортежи……………………………………………………………………………………………… 90
5.3. Распаковка последовательностей……………………………………………………………………………………… 91
5.3.1. Пара слов о множественном присваивании и множественном выводе………………… 93
5.4. Генераторы………………………………………………………………………………………………………………………….. 93
5.4.1. Генераторы-функции………………………………………………………………………………………………… 93
5.4.2. Генераторы-выражения……………………………………………………………………………………………. 95
5.5. Словари……………………………………………………………………………………………………………………………….. 95
5.5.1. Создание словарей……………………………………………………………………………………………………. 95
5.5.2. Обработка словарей…………………………………………………………………………………………………. 96
5.5.2.1. Простейшие операции над словарями………………………………………………………. 96
5.5.2.2. Добавление, извлечение и удаление элементов словаря…………………………. 97
5.5.2.3. Перебор элементов словаря……………………………………………………………………….. 98
5.5.3. Сравнение словарей……………………………………………………………………………………………….. 100
5.5.4. Словарные включения……………………………………………………………………………………………. 100
5.5.5. Словари со значением по умолчанию defaultdict……………………………………………….. 101
5.6. Отображения……………………………………………………………………………………………………………………… 101
5.7. Особенности хранения значений в переменных. Ссылки……………………………………………… 102
5.8. Копирование списков, кортежей и словарей………………………………………………………………….. 103
5.9. Что еще нужно знать о генераторах и не только……………………………………………………………. 104
5.10. Самостоятельные упражнения………………………………………………………………………………………. 105
Урок 6. Функции………………………………………………………………………………….. 106
6.1. Вызов функций………………………………………………………………………………………………………………….. 106
6.1.1. Виды параметров функций…………………………………………………………………………………….. 106
6.1.2. Распаковка последовательностей и отображений в вызовах функций……………… 107
6.2. Объявление своих функций………………………………………………………………………………………………. 108
6.2.1. Объявление функции………………………………………………………………………………………………. 108
6.2.2. Доступ к глобальным переменным из тела функции…………………………………………… 109
6.2.3. Необязательные параметры………………………………………………………………………………….. 110
6.2.4. Произвольное количество параметров…………………………………………………………………. 111
6.2.5. Строго позиционные, строго именованные и двоякие параметры…………………….. 112
6.3. Функция как значение………………………………………………………………………………………………………. 114
6.3.1. Разные функции и методы, принимающие с параметрами другие функции……… 114
6.4. Лямбда-функции……………………………………………………………………………………………………………….. 116
6.5. Вложенные функции…………………………………………………………………………………………………………. 117
6.5.1. Замыкания. Фабрики функций……………………………………………………………………………….. 118
6.6. Декораторы функций………………………………………………………………………………………………………… 120
6.7. Сообщения об ошибках в телах функций. Стек вызовов………………………………………………. 122
6.8. Что еще нужно знать о функциях…………………………………………………………………………………….. 123
6.9. Самостоятельное упражнение…………………………………………………………………………………………. 124
Урок 7. Классы и объекты……………………………………………………………………. 125
7.1. Объекты……………………………………………………………………………………………………………………………… 125
7.1.1. Создание объектов………………………………………………………………………………………………….. 125
7.1.2. Обращение к атрибутам и вызов методов…………………………………………………………….. 125
7.1.3. Объектные и классовые атрибуты и методы………………………………………………………… 126
7.2. Классы……………………………………………………………………………………………………………………………….. 127
7.2.1. Объявление класса………………………………………………………………………………………………….. 127
7.2.2. Конструктор и деструктор…………………………………………………………………………………….. 128
7.2.3. Наследование классов……………………………………………………………………………………………. 130
7.2.3.1. Объявление производного класса……………………………………………………………. 130
7.2.3.2. Перекрытие и переопределение методов………………………………………………… 131
7.2.3.3. Множественное наследование…………………………………………………………………. 133
7.2.3.4. Указание декораторов функций у методов……………………………………………… 134
7.2.4. Классовые атрибуты и методы. Статические методы………………………………………… 134
7.2.5. Закрытые атрибуты и методы……………………………………………………………………………….. 135
7.2.6. Свойства………………………………………………………………………………………………………………….. 136
7.2.7. Добавленные атрибуты………………………………………………………………………………………….. 138
7.2.7.1. Ограничение набора создаваемых атрибутов……………………………………….. 138
7.2.8. Вложенные классы…………………………………………………………………………………………………. 139
7.2.9. Класс как значение…………………………………………………………………………………………………. 140
7.3. Декораторы классов…………………………………………………………………………………………………………. 140
7.4. Что еще нужно знать об объектах и классах………………………………………………………………….. 141
7.5. Самостоятельные упражнения………………………………………………………………………………………… 142
Урок 8. Модули и пакеты…………………………………………………………………….. 143
8.1. Модули. Импорт и подключение…………………………………………………………………………………….. 143
8.1.1. Использование сущностей из другого модуля……………………………………………………… 143
8.1.1.1. Импорт сущностей…………………………………………………………………………………….. 143
8.1.1.2. Подключение модулей………………………………………………………………………………. 144
8.1.2. Указание сущностей, доступных извне………………………………………………………………… 145
8.1.3. Создание своих модулей………………………………………………………………………………………… 145
8.2. Пакеты……………………………………………………………………………………………………………………………….. 146
8.2.1. Создание пакетов……………………………………………………………………………………………………. 146
8.2.2. Импорт и подключение из пакетов. Пути сущностей………………………………………….. 146
8.3. Что еще нужно знать о модулях, импорте и подключении……………………………………………. 148
8.4. Самостоятельное упражнение…………………………………………………………………………………………. 149
Урок 9. Исключения и их обработка. Обработчики контекстов…………… 150
9.1. Исключения……………………………………………………………………………………………………………………….. 150
9.1.1. Введение в исключения………………………………………………………………………………………….. 150
9.1.2. Обработка исключений………………………………………………………………………………………….. 151
9.1.3. Возбуждение исключений……………………………………………………………………………………… 153
9.1.4. Объявление своих исключений……………………………………………………………………………… 154
9.2. Обработчики контекстов………………………………………………………………………………………………….. 154
Часть II. Язык Python: расширенные инструменты……….. 157
Урок 10. Функции и классы особой функциональности………………………. 159
10.1. Создание генераторов-функций…………………………………………………………………………………….. 159
10.2. Dunder-методы и их использование………………………………………………………………………………. 160
10.2.1. Преобразование объектов в другие типы данных……………………………………………. 161
10.2.2. Поддержка арифметических операций с объектами.
Перегрузка операторов………………………………………………………………………………………. 162
10.2.3. Поддержка операций сравнения……………………………………………………………………….. 164
10.2.4. Создание своих итераторов……………………………………………………………………………….. 164
10.2.5. Создание своих последовательностей……………………………………………………………… 166
10.2.6. Создание своих отображений……………………………………………………………………………. 167
10.2.7. Прочие dunder-методы……………………………………………………………………………………….. 168
10.3. Написание менеджеров контекста………………………………………………………………………………… 170
10.3.1. Функции-менеджеры контекста…………………………………………………………………………. 170
10.3.2. Классы-менеджеры контекста…………………………………………………………………………… 171
10.4. Перечисления………………………………………………………………………………………………………………….. 172
10.5. Что еще нужно знать о классах особой функциональности……………………………………….. 175
10.6. Самостоятельные упражнения………………………………………………………………………………………. 176
Урок 11. Регулярные выражения………………………………………………………….. 177
11.1. Создание регулярных выражений…………………………………………………………………………………. 177
11.2. Написание регулярных выражений………………………………………………………………………………. 177
11.2.1. Метасимволы………………………………………………………………………………………………………. 178
11.2.2. Поднаборы…………………………………………………………………………………………………………… 178
11.2.3. Вариант……………………………………………………………………………………………………………….. 179
11.2.4. Квантификаторы…………………………………………………………………………………………………. 179
11.2.5. Утверждения………………………………………………………………………………………………………… 180
11.2.6. Группы…………………………………………………………………………………………………………………. 181
11.2.7. Обычные символы………………………………………………………………………………………………. 182
11.2.8. Флаги……………………………………………………………………………………………………………………. 182
11.2.9. Тестирование регулярных выражений……………………………………………………………… 183
11.3. Использование регулярных выражений……………………………………………………………………….. 184
11.3.1. Поиск первого совпадения…………………………………………………………………………………. 184
11.3.2. Поиск всех совпадений……………………………………………………………………………………….. 186
11.3.3. Прочие случаи использования…………………………………………………………………………… 186
11.4. Что еще нужно знать о регулярных выражениях и не только…………………………………….. 188
11.5. Самостоятельные упражнения………………………………………………………………………………………. 188
Урок 12. Установка и использование дополнительных библиотек……….. 189
12.1. Работа с дополнительными библиотеками. Утилита pip……………………………………………. 189
12.2. Библиотека Pillow: работа с графикой………………………………………………………………………….. 191
12.3. Программа для создания графических миниатюр, версия 1.0……………………………………. 192
12.4. Модуль argparse: обработка командных ключей……………………………………………………….. 194
12.4.1. Введение в командные ключи и их обработка…………………………………………………. 194
12.4.2. Создание объекта обработчика командных ключей………………………………………. 195
12.4.3. Описание командных ключей……………………………………………………………………………. 196
12.4.4. Обработка командных ключей………………………………………………………………………….. 198
12.5. Программа для создания графических миниатюр, версия 2.0……………………………………. 199
12.6. Что еще нужно знать о дополнительных библиотеках……………………………………………….. 201
12.7. Самостоятельные упражнения………………………………………………………………………………………. 202
Урок 13. Многопоточное и многопроцессное программирование…………. 203
13.1. Многопоточное программирование……………………………………………………………………………… 203
13.1.1. Введение в потоки. Глобальная блокировка интерпретатора……………………….. 203
13.1.2. Создание потоков……………………………………………………………………………………………….. 204
13.1.3. Блокировки………………………………………………………………………………………………………….. 206
13.1.4. Программа для создания графических миниатюр, версия 3.0………………………… 207
13.1.5. Очереди………………………………………………………………………………………………………………… 209
13.1.6. Программа для создания графических миниатюр, версия 3.1………………………… 211
13.2. Многопроцессное программирование………………………………………………………………………….. 213
13.2.1. Процессы и работа с ними…………………………………………………………………………………. 213
13.2.2. Программа для создания графических миниатюр, версия 4.0………………………… 214
13.3. Что еще нужно знать о потоках и процессах……………………………………………………………….. 215
13.4. Самостоятельные упражнения………………………………………………………………………………………. 216
Урок 14. Конкурентное программирование………………………………………….. 217
14.1. Сопрограммы………………………………………………………………………………………………………………….. 217
14.1.1. Введение в сопрограммы. Фьючеры………………………………………………………………….. 217
14.1.2. Сопрограммы-методы………………………………………………………………………………………… 220
14.1.2.1. Асинхронные итераторы. Цикл перебора с приостановкой……………. 220
14.1.2.2. Асинхронные менеджеры контекста.
Асинхронный обработчик контекста…………………………………………………. 221
14.1.3. Сопрограммы-генераторы…………………………………………………………………………………. 222
14.2. Задачи……………………………………………………………………………………………………………………………… 222
14.2.1. Создание и выполнение задач…………………………………………………………………………… 222
14.2.2. Одновременный запуск задач……………………………………………………………………………. 223
14.2.3. Группы задач………………………………………………………………………………………………………. 224
14.2.4. Прерывание задач………………………………………………………………………………………………. 225
14.3. Асинхронные очереди……………………………………………………………………………………………………. 226
14.4. Библиотека aiofiles: конкурентная работа с файлами………………………………………………… 226
14.5. Программа для создания графических миниатюр, версия 5.0……………………………………. 227
14.6. Самостоятельные упражнения………………………………………………………………………………………. 230
Урок 15. Аннотации типов и документирование кода. Датаклассы……… 231
15.1. Аннотации типов и их применение……………………………………………………………………………….. 231
15.1.1. Написание аннотаций типов……………………………………………………………………………… 231
15.1.1.1. Указание типов в аннотациях…………………………………………………………….. 232
15.1.1.2. Указание типов элементов у списков и кортежей…………………………….. 233
15.1.1.3. Указание типов элементов у последовательностей и отображений
произвольных типов……………………………………………………………………………. 234
15.1.1.4. Указание типов у функций, присваиваемых переменным……………….. 235
15.1.1.5. Указание типов у фьючеров……………………………………………………………….. 235
15.1.1.6. Указание типов значений, выдаваемых генераторами-функциями… 236
15.1.1.7. Обобщенные типы……………………………………………………………………………….. 237
15.1.2. Получение аннотаций, заданных у функций и методов………………………………….. 237
15.2. Строки документирования…………………………………………………………………………………………….. 238
15.3. Датаклассы……………………………………………………………………………………………………………………… 241
15.3.1. Простейшие датаклассы…………………………………………………………………………………….. 241
15.3.2. Более сложные датаклассы……………………………………………………………………………….. 243
15.4. Что еще нужно знать об аннотациях типов………………………………………………………………….. 245
15.5. Самостоятельное упражнение………………………………………………………………………………………. 245
Часть III. Практическое Python-программирование……… 247
Урок 16. Загрузка и анализ данных из Интернета………………………………… 249
16.1. Библиотека requests: загрузка файлов из Интернета…………………………………………………… 249
16.1.1. Requests: отправка клиентских запросов………………………………………………………….. 249
16.1.2. Requests: обработка полученных серверных ответов…………………………………….. 251
16.1.3. Requests: загрузка больших файлов………………………………………………………………….. 252
16.2. Библиотека Beautiful Soup: парсинг веб-страниц……………………………………………………….. 253
16.2.1. Подготовка к парсингу веб-страницы……………………………………………………………….. 253
16.2.2. Навигация по структуре узлов веб-страницы………………………………………………….. 254
16.2.3. Получение сведений об узле………………………………………………………………………………. 256
16.2.4. Поиск узлов………………………………………………………………………………………………………….. 257
16.2.5. Программа, выводящая заголовки статей на веб-сайте 3DNews.ru……………….. 262
16.2.6. Программа, сохраняющая изображения с заданной веб-страницы,
версия 1.0……………………………………………………………………………………………………………… 263
16.3. Библиотека aiohttp: конкурентная загрузка файлов……………………………………………………. 266
16.3.1. Aiohttp: отправка клиентских запросов……………………………………………………………. 267
16.3.2. Aiohttp: обработка серверных ответов……………………………………………………………… 267
16.3.3. Aiohttp: загрузка больших файлов…………………………………………………………………….. 268
16.3.4. Программа, сохраняющая изображения с заданной веб-страницы,
версия 2.0……………………………………………………………………………………………………………… 269
16.4. Самостоятельные упражнения………………………………………………………………………………………. 271
Урок 17. Разработка веб-приложений, часть 1……………………………………… 272
17.1. Основы библиотеки NiceGUI………………………………………………………………………………………….. 272
17.1.1. Страницы и маршруты……………………………………………………………………………………….. 272
17.1.2. Запуск и остановка веб-приложения…………………………………………………………………. 274
17.1.3. Создание гиперссылок……………………………………………………………………………………….. 275
17.1.4. Параметризованные маршруты и URL-параметры…………………………………………. 276
17.1.5. Обработка событий…………………………………………………………………………………………….. 277
17.1.6. Функция run(), запускающая веб-приложение…………………………………………………. 279
17.2. Основные элементы страниц…………………………………………………………………………………………. 280
17.2.1. Надпись……………………………………………………………………………………………………………….. 280
17.2.2. Графический элемент…………………………………………………………………………………………. 280
17.2.3. Гиперссылка………………………………………………………………………………………………………… 280
17.2.4. Текст в формате Markdown………………………………………………………………………………… 281
17.2.5. Аудиоролик…………………………………………………………………………………………………………. 282
17.2.6. Видеоролик………………………………………………………………………………………………………….. 283
17.2.7. Фрагмент программного кода……………………………………………………………………………. 283
17.3. Разметочные элементы…………………………………………………………………………………………………… 284
17.3.1. Блок-строка…………………………………………………………………………………………………………. 284
17.3.2. Блок-колонка……………………………………………………………………………………………………….. 284
17.3.3. Разделитель…………………………………………………………………………………………………………. 285
17.3.4. Блок-сетка……………………………………………………………………………………………………………. 285
17.3.5. Спойлер……………………………………………………………………………………………………………….. 286
17.3.6. Быстрая разметка страниц…………………………………………………………………………………. 288
17.4. Если вы знаете HTML и CSS………………………………………………………………………………………….. 290
17.4.1. Создание произвольных HTML-элементов………………………………………………………. 290
17.4.2. Указание стилевых классов и встроенных CSS-стилей…………………………………… 291
17.4.3. Обработка событий DOM…………………………………………………………………………………… 292
17.5. Статические и выгруженные файлы……………………………………………………………………………… 292
17.6. Веб-приложение фотогалереи, версия 1.0…………………………………………………………………….. 293
17.7. Что еще нужно знать о NiceGUI, часть 1………………………………………………………………………. 296
17.8. Самостоятельные упражнения………………………………………………………………………………………. 297
Урок 18. Работа с базами данных…………………………………………………………. 298
18.1. Введение в реляционные базы данных…………………………………………………………………………. 298
18.2. Библиотека Tortoise ORM: удобная работа с базами данных……………………………………. 299
18.3. Модели…………………………………………………………………………………………………………………………….. 299
18.3.1. Объявление моделей…………………………………………………………………………………………… 300
18.3.2. Настройки, поддерживаемые всеми полями…………………………………………………….. 300
18.3.3. Типы полей………………………………………………………………………………………………………….. 301
18.3.4. Создание межтабличных связей………………………………………………………………………… 302
18.3.5. Настройки самой модели…………………………………………………………………………………… 303
18.4. Соединение с базой данных и инициализация схемы…………………………………………………. 304
18.5. Запись данных………………………………………………………………………………………………………………… 305
18.5.1. Создание записей………………………………………………………………………………………………… 305
18.5.2. Правка записей……………………………………………………………………………………………………. 306
18.5.3. Удаление записей……………………………………………………………………………………………….. 307
18.6. Выборка данных…………………………………………………………………………………………………………….. 307
18.6.1. Поиск записи……………………………………………………………………………………………………….. 307
18.6.2. Извлечение значений из полей записи………………………………………………………………. 308
18.6.3. Фильтрация записей. Наборы записей……………………………………………………………… 308
18.6.3.1. Модификаторы…………………………………………………………………………………….. 309
18.6.4. Сортировка записей……………………………………………………………………………………………. 311
18.6.5. Извлечение первой и последней записей………………………………………………………….. 311
18.6.6. Извлечение заданного количества записей………………………………………………………. 312
18.6.7. Извлечение всех записей…………………………………………………………………………………….. 312
18.6.8. Проверка существования записей……………………………………………………………………… 312
18.6.9. Извлечение связанных записей………………………………………………………………………….. 313
18.6.10. Извлечение записей в виде списка словарей………………………………………………….. 314
18.7. Закрытие соединения с базой данных………………………………………………………………………….. 314
18.8. Интеграция Tortoise ORM и NiceGUI…………………………………………………………………………….. 315
18.9. Веб-приложение фотогалереи, версия 2.0…………………………………………………………………….. 315
18.9.1. Модели пользователя и изображения……………………………………………………………….. 315
18.9.2. База данных веб-приложения……………………………………………………………………………. 317
18.9.3. Вывод изображений из базы данных………………………………………………………………… 317
18.10. Что еще нужно знать о библиотеке Tortoise ORM……………………………………………………… 319
18.11. Самостоятельные упражнения……………………………………………………………………………………. 320
Урок 19. Разработка веб-приложений, часть 2……………………………………… 321
19.1. Элементы управления…………………………………………………………………………………………………….. 321
19.1.1. Кнопка………………………………………………………………………………………………………………….. 321
19.1.2. Поле ввода…………………………………………………………………………………………………………… 321
19.1.3. Область редактирования……………………………………………………………………………………. 322
19.1.4. Флажок…………………………………………………………………………………………………………………. 322
19.1.5. Набор переключателей………………………………………………………………………………………. 323
19.1.6. Раскрывающийся список……………………………………………………………………………………. 323
19.1.7. Поле для ввода числа…………………………………………………………………………………………. 325
19.1.8. Регулятор……………………………………………………………………………………………………………… 326
19.1.9. Поле для выбора файлов……………………………………………………………………………………. 326
19.2. Хранилища данных NiceGUI…………………………………………………………………………………………. 328
19.3. Хеширование паролей……………………………………………………………………………………………………. 329
19.4. Веб-приложение фотогалереи, версия 3.0…………………………………………………………………….. 330
19.4.1. Верхнее меню и секретный ключ………………………………………………………………………. 330
19.4.2. Страницы входа и выхода…………………………………………………………………………………. 331
19.4.3. Страница пользовательского профиля……………………………………………………………… 333
19.4.4. Страницы добавления и удаления изображений…………………………………………….. 335
19.5. Что еще нужно знать о библиотеке NiceGUI, часть 2………………………………………………….. 338
19.6. Самостоятельное упражнение………………………………………………………………………………………. 338
Урок 20. Разработка графических приложений……………………………………. 339
20.1. Библиотека Toga: разработка графических приложений…………………………………………… 339
20.2. Основы библиотеки Toga……………………………………………………………………………………………….. 339
20.2.1. Окна и контейнеры……………………………………………………………………………………………… 339
20.2.2. Обработка событий…………………………………………………………………………………………….. 341
20.2.3. Оформление приложения. Стили……………………………………………………………………….. 342
20.2.4. Запуск и останов приложения……………………………………………………………………………. 343
20.3. Простейшие элементы окон…………………………………………………………………………………………… 344
20.3.1. Свойства и методы, поддерживаемые всеми элементами окон………………………. 344
20.3.2. Надпись……………………………………………………………………………………………………………….. 345
20.3.3. Поле ввода…………………………………………………………………………………………………………… 345
20.3.4. Область редактирования……………………………………………………………………………………. 345
20.3.5. Флажок…………………………………………………………………………………………………………………. 346
20.3.6. Кнопка………………………………………………………………………………………………………………….. 346
20.3.7. Графический элемент…………………………………………………………………………………………. 347
20.3.8. Поле для ввода целого числа…………………………………………………………………………….. 347
20.3.9. Поле для ввода пароля……………………………………………………………………………………….. 348
20.3.10. Регулятор…………………………………………………………………………………………………………… 348
20.4. Модели и списки……………………………………………………………………………………………………………… 349
20.4.1. Модели…………………………………………………………………………………………………………………. 349
20.4.2. Списковые элементы управления……………………………………………………………………… 351
20.4.2.1. Раскрывающийся список…………………………………………………………………….. 351
20.4.2.2. Таблица………………………………………………………………………………………………… 352
20.5. Контейнеры……………………………………………………………………………………………………………………… 353
20.5.1. Стопка………………………………………………………………………………………………………………….. 353
20.5.2. Блокнот с вкладками…………………………………………………………………………………………… 354
20.5.3. Панель с прокруткой…………………………………………………………………………………………… 355
20.6. Задание стилей у элементов окон…………………………………………………………………………………. 356
20.7. Управление окнами………………………………………………………………………………………………………… 358
20.7.1. Задание главного окна приложения………………………………………………………………….. 358
20.7.2. Создание вторичных окон………………………………………………………………………………….. 360
20.7.3. Вывод стандартных модальных окон………………………………………………………………. 363
20.8. Интеграция библиотек Toga и Tortoise ORM………………………………………………………………… 364
20.9. Что еще нужно знать о библиотеке Toga………………………………………………………………………. 364
20.10. Самостоятельные упражнения……………………………………………………………………………………. 365
Урок 21. Математика……………………………………………………………………………. 366
21.1. Библиотека Matplotlib: вывод графиков……………………………………………………………………….. 366
21.1.1. Основные принципы Matplotlib………………………………………………………………………….. 366
21.1.1.1. Вывод простого графика…………………………………………………………………….. 366
21.1.1.2. Вывод двух графиков на одних координатных осях……………………….. 368
21.1.1.3. Вывод двух графиков на разных координатных осях……………………… 369
21.1.1.4. Настройка графиков……………………………………………………………………………. 370
21.1.2. Создание координатных осей……………………………………………………………………………. 372
21.1.3. Рисование графиков разных типов……………………………………………………………………. 373
21.1.4. Вывод и оформление графиков………………………………………………………………………….. 377
21.2. Библиотека NumPy: обработка многомерных массивов…………………………………………….. 378
21.3. Что еще нужно знать о библиотеках Matplotlib и NumPy…………………………………………… 382
Урок 22. Искусственный интеллект……………………………………………………… 383
22.1. Регистрация в личном кабинете GigaChat API и получение ключа авторизации…….. 383
22.2. Библиотеки LangChain, langchain-community и langchain-gigachat……………………………. 384
22.3. Разработка ИИ-клиентов………………………………………………………………………………………………… 384
22.3.1. Соединение с большой языковой моделью………………………………………………………. 384
22.3.2. ИИ-клиент: отправка запросов и получение ответов………………………………………. 385
22.3.3. ИИ-клиент: хранение истории взаимодействия с языковой моделью…………….. 387
22.3.4. ИИ-клиент: очистка истории……………………………………………………………………………… 388
22.3.5. Получение ответа по частям……………………………………………………………………………… 390
22.3.6. Конкурентная работа с языковыми моделями…………………………………………………. 391
22.4. Разработка ИИ-агентов………………………………………………………………………………………………….. 392
22.4.1. Объявление инструментов………………………………………………………………………………….. 392
22.4.1.1. Инструмент для поиска в Интернете средствами DuckDuckGo………. 393
22.4.2. Создание ИИ-агента……………………………………………………………………………………………. 393
22.4.3. ИИ-агент: отправка запросов и получение ответов…………………………………………. 394
22.4.4. Обработка ответов……………………………………………………………………………………………… 396
22.4.5. ИИ-агент: хранение истории взаимодействия с языковой моделью………………. 397
22.4.6. Работа с состоянием ИИ-агента………………………………………………………………………… 399
22.4.7. ИИ-агент: очистка истории………………………………………………………………………………… 400
22.5. Что еще нужно знать о работе с искусственным интеллектом…………………………………… 401
22.6. Самостоятельное упражнение………………………………………………………………………………………. 402
Заключение………………………………………………………………………………………….. 403
Приложения…………………………………………………………………………………… 405
Приложение 1. Установка исполняющей среды Python………………………… 407
Приложение 2. Приоритет операторов Python………………………………………. 411
Приложение 3. Использование ИИ для изучения Python
и написания программного кода………………………………………………………….. 412
Приложение 4. Описание файлового архива………………………………………… 416
Предметный указатель…………………………………………………………………………. 417






















