Оглавление ...4
Введение ...9
ТЕМА 1. КРАТКАЯ ИСТОРИЯ PYTHON, ЕГО ОСОБЕННОСТИ И ТИПЫ ДАННЫХ ...13
1.1. Краткая история языка программирования Python ...13
1.2. В Python все является объектом ...17
1.3. В ython нет переменных ...17
1.4. Интернированные (intern) объекты в Python ...26
1.5. Глобальная блокировка интерпретатора ...28
1.6. Подходы к сборке мусора в Python ...31
1.7. Встроенные типы данных Python ...36
Резюме. Вопросы и задания для самопроверки. Упражнения ...59-60
ТЕМА 2. СИНТАКСИС, ОПЕРАТОРЫ И УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ...63
2.1. Основные операторы в Python ...63
2.2. Использование отступов в Python ...69
2.3. Комментарии ...70
2.4. Правила именования переменных (имен) ...71
2.5. Оператор if ...71
2.6. Цикл while ...73
2.7. Цикл for ...76
2.8. Различные способы написания циклов ...78
2.9. Итерации и включения ...82
2.10. Источники документации Python ...86
Резюме. Вопросы и задания для самопроверки. Упражнения ...91-93
ТЕМА З. ФУНКЦИИ В PYTHON ...95
3.1. Области видимости ...97
3.2. Аргументы функции ...102
3.3. Возвращение результатов выполнения функцией ...108
3.4. Рекурсия ...110
3.5. Аннотация функций ...111
3.6. Лямбда-функции (выражения) ...113
3.7. Декораторы ...114
3.8. Генераторы ...118
Резюме. Вопросы и задания для самопроверки ...122
ТЕМА 4. МОДУЛИ И ПАКЕТЫ ...126
4.1. Принцип работы импортирования ...127
4.2. Создание и использование модулей ...130
4.3. Создание и использование пакетов модулей ...139
Резюме. Вопросы и задания для самопроверки. Упражнения ...142-143
ТЕМА 5. КЛАССЫ И ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ...144
5.1. Определение класса ...144
5.2. Имена (переменные) экземпляров класса ...146
5.3. Методы экземпляра класса ...146
5.4. Имена (переменные) класса ...147
5.5. Статические методы ...149
5.6. Методы класса ...149
5.7. Приватные методы и переменные ...150
5.8. Наследование ...151
5.9. Множественное наследование ...156
5.10. Абстрактные классы и переопределение методов ...158
5.11. Перегрузка операций ...160
5.12. Вложенные классы и пространство имен ...175
5.13. Перечисления (Enum) ...177
Резюме. Вопросы для самопроверки. Упражнения ...183-184
ТЕМА 6. ИСКЛЮЧЕНИЯ (EXCEPTION) ...186
6.1. Пользовательские исключения ...187
6.2. Основы обработки и генерации исключений ...188
6.З. Встроенные классы исключений ...196
Резюме. Вопросы и задания для самопроверки. Упражнения ...197-198
ТЕМА 7. ПОТОКИ, ПРОЦЕССЫ И АСИНХРОННОЕ ПРОГРАММИРОВАНИЕ ...200
7.1. Многопоточное программирование ...200
7.2. Multiprocessing ...209
7.3. Асинхронное программирование ...214
7.4. Что и когда использовать? ...219
Резюме. Вопросы и задания для самопроверки. Упражнения ...220
ТЕМА 8. РАЗРАБОТКА ГРАФИЧЕСКОГО ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА ...222
8.1. Установка PySide2 ...222
8.2. Основы разработки GUI ...223
8.3. Пользовательские виджеты и сигнал-слотовый механизм ...232
8.4. Использование Qt Designer для разработки GUI ...237
Резюме. Вопросы и задания для самопроверки. Упражнения ...241-242
ТЕМА 9. СЕТЕВОЕ ПРОГРАММИРОВАНИЕ ...244
9.1. Архитектура «клиент-сервер» ...246
9.2. Модуль socket ...248
9.3. Пример клиента и сервера, работающих без установления соединения ...249
9.4. Пример клиента и сервера, работающих с установлением соединения ...251
9.5. Фреймворк для сетевых серверов — socketserver ...253
Резюме. Вопросы и задания для самопроверки. Упражнения ...255-256
ТЕМА 10. ХРАНЕНИЕ ДАННЫХ И ОБМЕН ДАННЫМИ ...257
10.1. Создание базы данных SQLite ...257
10.2. Использование переменных в запросах ...261
10.3. Транзакции ...262
ТЕМА 11. ТЕСТИРОВАНИЕ ...271
11.1. Тестирование с использованием библиотеки PyTest ...272
11.2. Тестирование с использованием unittest ...280
Резюме. Вопросы и задания для самопроверки. Упражнения ...282
Список используемых источников ...283
Новинки по дисциплине «Программирование на языке Python» и смежным дисциплинам ...287
В курсе подробно описывается не только большое количество базовых понятий и операторов языка программирования Python, но и ряд нюансов, с которыми так или иначе предстоит встретиться при его использовании в процессе написания программных продуктов. Материал подается по принципу «от простого к сложному» и сопровождается большим количеством примеров и упражнений, что позволяет сформировать у студентов практические навыки программирования и тестирования разрабатываемых приложений. Все исходные коды рассматриваемых примеров можно скачать с репозитория автора на GitHub. Соответствует актуальным требованиям федерального государственного образовательного стандарта высшего образования. Курс предназначен для студентов высших учебных заведений, которые обучаются по инженерно-техническим направлениям.