Динамические языки. Динамическая типизация. Классификация языка Python и его области применения. Реализации Python.
Модули и пакеты. Импорт. Путь поиска. Пакеты пространств имён. Скрытие данных в модулях.
Основные типы данных. Списки, кортежи, словари, множества и способы их создания. Строки.
Формы операции присваивания. Ссылочная модель присваивания.
Блоки. Основные управляющие конструкции языка. Функция range. Другие функции для обработки последовательностей.
Функции. Способы передачи аргументов. Аннотации аргументов. Области видимости. Генераторы. Анонимные функции. Элементы функционального программирования.
Объекты. Автоматическое управление памятью. Иерархия стандартных типов. Типы как объекты. Объекты классов и экземпляры. Атрибуты. Специальные атрибуты. Перегрузка операций. Частные атрибуты. Слоты. Свойства. Средства документирования кода.
Наследование. Порядок поиска методов. Статические и классовые методы.
Декораторы и метаклассы.
Обработка исключений. Менеджеры контекстов. Иерархия стандартных типов исключений.
Обзор стандартной библиотеки.
Использование языка Python вместе с другими языками.
Содержание дисциплины изложено в тематическом порядке, однако изложение материала рекомендуется проводить в форме «срезов». В частности, в начале курса предлагается изложить минимальный объём языковых средств, необходимых для начала выполнения самостоятельной работы. Дополнительные средства могут быть введены далее при рассмотрении примеров, при этом они будут сгруппированы не в порядке справочника или стандарта, а в соответствии с их использованием в реальных задачах.
В рамках данного гибкого подхода распределение часов по темам давать нецелесообразно. Кроме того, преподавателю следует перераспределить время между темами и рассмотреть дополнительные примеры, если та или иная конструкция вызывает затруднения у учащихся. Часы самостоятельной работы учащиеся распределяют между получаемыми заданиями самостоятельно. Общий объём выполняемой ими работы согласуется с преподавателем, основываясь на их способностях.