Попытка описания подмножества Python
Жёлтым размечены интересные, полезные, но необязательные) подтемы.
Голубым размечены также интересные-полезные-необязательные темы, которые играют дополнительную роль разоблачения чёрной магии (см.)
Зелёным помечены темы, относящиеся к категории «алгоритмы», на которых удобно иллюстрировать возможности языка
Сиреневым помечены довольно сложные необязательные темы
- «Аксиомы»
- Объект
- Оператор («команда»)
Некоторые скалярные объекты Python (int, float, bool, NoneType). Константные конструкторы объектов
Выражения. Некоторые операции над объектами ( выбрать ). Оператор-выражение.
Связывание объектов именами, операция связывания =
Пустой оператор. Объект-функция: оператор описания def, понятие блока операторов, формальные параметры и возвращаемое значение. Использование в выражении. Функции-выражения вида lambda параметры: выражение, их отличие от заданных с помощью оператора def
Локальное и глобальное пространства имён. Вложенный вызов и вложенное описание функции. Время жизни локального пространства имён при вызове функции и при нескольких вложенных вызовах. Встроенные функции dir() и print() (пока только для получения информации).
Встроенные объекты (dir(__builtins__)) Python (пока очень немногие, какие? type(), ещё?).
Инкапсуляция имён в объектах, dir(объект), доступ к инкапсулированному имени. Поля и методы объекта. Спецметоды. Строгое соответствие операций спецметодам. Сведение выражения к суперпозиции вызовов методов.
Модули Python: пополнение пространства имён (непосредственно или инкапсулированно в модуль) с помощью оператора import. Модуль math ( Ещё какие-нибудь? )
- Константные последовательности. Кортежи. Индексация. Операция секционирования. Методы кортежей и операции с константными последовательностями. Множественное именование.
Константные последовательности. Строки. Строковые методы и операции над строками. Особенности строк как последовательностей (элемент строки — строка, операция in и метод .find() находят подстроки и т. п.)
Текстовый характер ввода-вывода при взаимодействии с человеком. Преобразование типов (в частности, в тип str и обратно). Функция print(). Методы .__repr__() и __str__()
Функция input(). Ввод не-строковых данных при помощи преобразования типов или интерпретации введённой строки (eval()). Опасность второго способа.
Логические выражения. Нулевой объект типа. Особенности AND и OR при работе с произвольными объектами. Тернарная операция значение-истина if условие else значение-ложь.
Условный оператор. Разделы else и elif. Отличие тернарной операции от оператора. Моделирование условного оператора с помощью функций и тернарной операции. Вложенные условные операторы.
Цикл while. Операторы break и continue. Вложенные циклы. Каноническая схема цикла (установка, проверка условия, тело, изменение условия). Раздел else в операторе while, пример использования на задаче поиска в последовательности. Моделирование циклов с помощью рекурсивных вызовов функции. Проблема накопления пространств имён.
Проход последовательности с помощью цикла for (+ break, continue, else).
Модифицируемые последовательности: списки (динамические массивы связей).Методы списков и операции над ними. Связывание объектов в списки. Идентичность объектов, операция is. Циклический конструктор списка. Вложенные конструкторы и раздел if. Множественное связывание в for и циклических конструкторах.. Работа функции dir().
Классы как произвольные пространства имён. Классы как типы объектов и их конструкторы. Объекты — экземпляры классов. Поля и методы. Первый параметр метода объекта. Правила видимости полей. Наследование классов. Множественное наследование.
Исключения. Управление потоком вычислений при помощи исключений, операторы try/except и raise. Иерархия исключений. Задание собственных исключений.
Вычислимые последовательности. Задание циклическим конструктором и использование (метод next и исключение StopIteration). Отличие от хранимых последовательностей. Функция range(). Работа цикла for: итерируемая последовательность + StopIteration). Работа множественного связывания (итерируемый объект в правой части).
Задание вычислимой последовательности с помощью повторно-входимых функций (оператор yield). Параметрические итераторы
Множества, операции над ними, циклический конструктор множества
Понятие функции расстановки (хеш-функции). Хеш-таблицы. Хешируемые (константные) объекты Python. Функция hash(). Словари, методы словарей и операции над ними.
Позиционные и именные параметры функции. Распаковка и упаковка параметров. Доступ к пространству имён (locals() и globals()). другие примеры использования словарей
eval() и exec(); задание пространства имён
декораторы и параметрические декораторы
Стек, его реализация с помощью массива списка. Очередь, проблемы реализации с помощью стандартного списка (динамического массива связей). Тип collections.deque. Другие типы из collections
Рекурсия. Требования к рекурсивным алгоритмам, ограничение на глубину. Моделирование рекурсии с помощью цикла и стека состояний