Краткий конспект лекций
Лекция 1. Установочная встреча.
Знакомство с преподавателем. Общая структура курса. Формирование итоговой оценки. Основные идеи, закладываемые в курс. Место курса в образовательной программе.
Лекция 2. Краткий обзор преимуществ и недостатков языка.
Создатель языка Python. Историческая
перспектива на версии языка. Семантическое версионирование. Области
использования языка. Сильные стороны языка, его основной недостаток.
Интерпретируемость как один из источников замедления работы по сравнению с
компилируемыми языками. Механика присваивания с точки зрения памяти. Переменные как имена.
Автоматический сбор мусора как один из источников замедления работы программы.
Типы int и float. Способы создания:
литералы и вызов типа.
Переменная как ссылка в памяти. Объект в памяти: значение, тип,
количество ссылок. Неизменяемость. Операции над числами. Краткая запись.
Отличия различных способов деления. Явное и неявное приведение.
Лекция 3. Строки: неизменяемые последовательности.
Последовательности в Python: str, list и tuple. Ключевые
свойства последовательностей. Индексируемость. Срезы: особенности
использования, синтаксиса. Срезы как способ копирования
последовательностей. Итерируемость. Варианты обхода последовательности:
по элементам, по индексам (range), одновременно по индексам и
значениям (enumerate). Взятие длины последовательности. Проверка на
вхождение. Получение минимального и максимального элементов. Подсчет
количества вхождений элемента. Получение индекса первого вхождения
элемента по его значению. Строковые методы. Особенности использования
методов split, join.
Лекция 4. Основы создания алгоритмического решения.
Анализ задачи. Формирование идей решения. Выбор метода решения. Выбор инструментов: типов данных и их свойств, типов циклов, условий остановки. Реализация для частного случая. Отладка решения. Реализация для общего случая. Определение узких мест с точки зрения количества вычислительных операций. Рефакторинг. Сравнение с альтернативными решениями. Свойства алгоритма: сложность, понятность.
Лекция 5. Списки. Кортежи. Множества.
Списки как изменяемые последовательности. Списочные выражения.
Демонстрация изменяемости через добавление, удаление и обновление.
Различные способы добавления новых элементов: append, extend и insert. Различные
способы удаления элементов: remove, pop и del.
Ловушка разделяемых ссылок. Виды копирования: поверхностное и глубокое.
Срезы как способ поверхностного копирования
последовательностей. Модуль copy и его основные функции: copy и deepcopy.
Способы создания кортежей. Структурная неизменяемость кортежей. Основные
преимущества от использования кортежей. Способы создания множеств. Основные операции на множествах.
Лекция 6. Словари.
Способы создания словарей. Разница в поведении оператора квадратные
скобки при извлечении значений в словаре и списке. Изменяемость
словарей. Добавление новых элементов в словарь. Удаление элементов из
словаря. Изменение существующих элементов. Уникальность ключей.
Требования к ключам словаря. Итерирование по ключам, значениям и парам,
хранящимся в словаре. Проверка на вхождение ключа с помощью оператора
in. Получение размера словаря с помощью len().
Лекция 7. Функции.
Объявление функции с помощью def. Требования и рекомендации к
именованию функций. Аргументы функции: позиционные и именованные.
Опциональные подсказки типов в описании аргументов и возвращаемых
значений. Вызов функции и её объявление. Возврат результатов функции с
помощью return. Возврат и обработка нескольких значений.
Сопоставление аргументов при вызове функции: позиционное и по имени.
Произвольное количество аргументов функции при помощи *args и
**kwargs.