Оглавление
Введение
ТЕМА 1. КРАТКАЯ ИСТОРИЯ PYTHON, ЕГО ОСОБЕННОСТИ И ТИПЫ ДАННЫХ
1.1. Краткая история языка программирования Python
1.2. В Python все является объектом
1.3. В Python нет переменных
1.4. Интернированные (intern) объекты в Python
1.5. Глобальная блокировка интерпретатора
1.6. Подходы к сборке мусора в Python
1.6.1. Алгоритм подсчета ссылок
1.6.2. Garbage Collector (GC)
1.6.3. Слабые ссылки
1.7. Встроенные типы данных Python
1.7.1. Строки
1.7.2. Списки
1.7.3. Словари
1.7.4. Кортежи
1.7.5. Файлы
1.7.6. Множества
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 2. СИНТАКСИС, ОПЕРАТОРЫ И УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ
2.1. Основные операторы в Python
2.2. Использование отступов в Python
2.3. Комментарии
2.4. Правила именования переменных (имен)
2.5. Оператор if
2.6. Цикл while
2.6.1. Работа цикла с операторами break, continue, pass
2.7. Цикл for
2.8. Различные способы написания циклов
2.8.1. Использование встроенной функции range
2.8.2. Использование встроенной функции zip
2.8.3. Использование встроенной функции enumerate
2.9. Итерации и включения
2.9.1. Итератор и итерируемый объект
2.9.2. Списковые включения (list comprehension)
2.10. Источники документации Python
Резюме
Вопросы для самопроверки
Упражнения
ТЕМА 3. ФУНКЦИИ В PYTHON
3.1. Области видимости
3.1.1. Области видимости и вложенные функции
3.1.2. Пример работы с областями видимости
3.1.3. Замыкания
3.2. Аргументы функции
3.2.1. Значения аргументов по умолчанию
3.2.2. Режимы сопоставления аргументов функции
3.3. Возвращение результатов выполнения функцией
3.4. Рекурсия
3.5. Аннотация функций
3.6. Лямбда-функции (выражения)
3.7. Декораторы
3.8. Генераторы
3.8.1. Генераторные функции
3.8.2. Генераторные выражения
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 4. МОДУЛИ И ПАКЕТЫ
4.1. Принцип работы импортирования
4.1.1. Поиск файла подключаемого модуля
4.1.2. Компиляция импортируемого модуля в байт-код
4.1.3. Выполнение кода модуля
4.2. Создание и использование модулей
4.2.1. Пространства имен модулей
4.2.2. Перезагрузка модулей
4.2.3. Запуск модуля как автономной программы
4.2.4. Внутренние имена в модулях
4.3. Создание и использование пакетов модулей
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 5. КЛАССЫ И ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
5.1. Определение класса
5.2. Имена (переменные) экземпляров класса
5.3. Методы экземпляра класса
5.4. Имена (переменные) класса
5.5. Статические методы
5.6. Методы класса
5.7. Приватные методы и переменные
5.8. Наследование
5.9. Множественное наследование
5.10. Абстрактные классы и переопределение методов
5.11. Перегрузка операций
5.11.1. Перегрузка __add__, __or__, __sub__
5.11.2. Перегрузка __getitem__ и __setitem__
5.11.3. Перегрузка __iter__ и __next__
5.11.4. Перегрузка __contains__
5.11.5. Перегрузка __getattr__ и __setattr__
5.11.6. Перегрузка __repr__ и __str__
5.11.7. Перегрузка __call__
5.11.8. Перегрузка методов сравнения
5.11.9. Перегрузка __len__ и __bool__
5.11.10. Декоратор @property или свойства
5.12. Вложенные классы и пространство имен
5.13. Перечисления (Enum)
5.13.1. IntEnum
5.13.2. IntFlag
5.13.3. Flag
5.13.4. Расширенные возможности перечислений
Резюме
Вопросы для самопроверки
Упражнения
ТЕМА 6. ИСКЛЮЧЕНИЯ (EXCEPTION)
6.1. Пользовательские исключения
6.2. Основы обработки и генерации исключений
6.2.1. Унифицированный оператор try/except/finally
6.2.2. Оператор raise
6.2.3. Оператор assert
6.2.4. Оператор with/as и протокол управления контекстами
6.3. Встроенные классы исключений
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 7. ПОТОКИ, ПРОЦЕССЫ И АСИНХРОННОЕ ПРОГРАММИРОВАНИЕ
7.1. Многопоточное программирование
7.1.1. Модуль threading и класс Thread
7.1.2. Потоки Timer
7.1.3. Класс RLock. Управление доступом к ресурсам
7.1.4. Синхронизация потоков
7.1.5. Семафоры
7.2. Multiprocessing
7.2.1. Модуль multiprocessing и класс Process
7.2.2. Взаимодействие между процессами
7.2.3. Пул процессов
7.3. Асинхронное программирование
7.3.1. Планирование времени вызова функций
7.3.2. Асинхронное получение результатов
7.3.3. Параллельное выполнение задач
7.4. Что и когда использовать?
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 8. РАЗРАБОТКА ГРАФИЧЕСКОГО ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
8.1. Установка PySide2
8.2. Основы разработки GUI
8.2.1. Hello World
8.2.2. QPushButton и QLabel
8.2.3. QLineEdit
8.2.4. QCheckBox
8.2.5. Компоновка элементов GUI
8.3. Пользовательские виджеты и сигнал-слотовый механизм
8.4. Использование Qt Designer для разработки GUI
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 9. СЕТЕВОЕ ПРОГРАММИРОВАНИЕ
9.1. Архитектура «клиент-сервер»
9.1.1. Логика работы без установления соединения
9.1.2. Логика работы с установлением соединения
9.2. Модуль socket
9.3. Пример клиента и сервера, работающих без установления соединения
9.4. Пример клиента и сервера, работающих с установлением соединения
9.5. Фреймворк для сетевых серверов — socketserver
9.5.1. TCP эхо-сервер с использованием TCPServer
9.5.2. UDP эхо-сервер с использованием UDPServer
Резюме
Вопросы и задания для самопроверки
Упражнения
ТЕМА 10. ХРАНЕНИЕ ДАННЫХ И ОБМЕН ДАННЫМИ
10.1. Создание базы данных SQLite
10.2. Использование переменных в запросах
10.2.1. Запросы с позиционными параметрами
10.2.2. Запросы с именованными параметрами
10.3. Транзакции
10.4. Уровни изоляции (доступа)
Резюме
Вопросы для самопроверки
Упражнения
ТЕМА 11. ТЕСТИРОВАНИЕ
11.1. Тестирование с использованием библиотеки PyTest
11.1.1. Простые тесты
11.1.2. Запуск одного или нескольких тестов
11.1.3. Запуск подмножества тестов
11.1.4. Использование фикстур
11.1.5. Параллельный запуск тестов
11.2. Тестирование с использованием unittest
11.2.1. Пример простого теста
11.2.2. Использование объектов-подделок
Резюме
Вопросы и задания для самопроверки
Упражнения
Список используемых источников
Новинки по дисциплине «Программирование на языке Python» и смежным дисциплинам
В курсе подробно описывается не только большое количество базовых понятий и операторов языка программирования Python, но и ряд нюансов, с которыми так или иначе предстоит встретиться при его использовании в процессе написания программных продуктов. Материал подается по принципу «от простого к сложному» и сопровождается большим количеством примеров и упражнений, что позволяет сформировать у студентов практические навыки программирования и тестирования разрабатываемых приложений. Все исходные коды рассматриваемых примеров можно скачать с репозитория автора на GitHub. Соответствует актуальным требованиям федерального государственного образовательного стандарта высшего образования. Курс предназначен для студентов высших учебных заведений, которые обучаются по инженерно-техническим направлениям.
Книга Чернышева «Основы программирования на Python» — это как раз тот случай, когда учебник читаешь не из-под палки, а с настоящим интересом. Она не похожа на сухую академическую литературу, которую приходится продирать строчка за строчкой. Здесь всё иначе: автор говорит с тобой на одном языке — без занудства, но с глубоким пониманием того, что действительно важно для того, кто только начинает погружаться в Python.
Что сразу бросается в глаза — это структура. Книга построена по принципу «от простого к сложному», но без резких скачков. Каждая тема — будь то типы данных, функции, ООП или даже сетевое программирование — разбирается подробно, с примерами и упражнениями. Причём примеры не абстрактные, а такие, которые действительно помогают понять, как это работает «в живую».
Особенно цепляет то, как Чернышев объясняет концепции, которые в других источниках часто подаются слишком формально. Например, тема «В Python нет переменных» — звучит провокационно, но после прочтения становится на свои места. То же самое с GIL, замыканиями, декораторами — всё это подаётся не как теория ради теории, а как знание, которое пригодится на практике.
Ещё один плюс — автор не избегает «неудобных» тем. Он честно рассказывает про подводные камни, например, про то, как работают изменяемые и неизменяемые типы, почему важно аккуратно использовать присваивание и в чём коварство циклических ссылок. Это те моменты, на которых часто спотыкаются новички, и здорово, что в книге им уделено внимание.
Практическая направленность чувствуется throughout. В конце каждой темы — упражнения, причём разного уровня: от простых задач на закрепление синтаксиса до более сложных, где уже нужно думать и искать решения. А ещё — рекомендации работать в паре, чтобы учиться не только коду, но и командному взаимодействию. Это ценно, ведь в реальной работе код редко пишется в одиночку.
Из минусов — возможно, кому-то покажется избыточным объём. Но это скорее не недостаток, а особенность. Книга действительно старается охватить многое: от основ до GUI, сетей и тестирования. И она не боится повторять важные моменты, чтобы они точно отложились.
В итоге: это не просто ещё один учебник по Python. Это скорее наставник, который не только учит языку, но и помогает понять его философию. Рекомендую тем, кто хочет разобраться в Python основательно, без гонки за модными тенденциями, но с упором на то, что действительно пригодится в работе. Если вы готовы уделить время и силы — эта книга точно их окупит.