Ссылки:
- Wiki курса
- Ведомость
- Плейлист с записями семинаров на YouTube
- Записи семинаров на Yandex.Disk
- Форма для сдачи бонусов. Просьба делать один ответ на семинар. Обсуждения будут в личных сообщениях в телеграме.
- 21.09.2022: Первое знакомство с языком. Установка среды разработки. Переменные. Булевые операции. If. Немного про строки. Дзен Python. (+ в тексте семинара есть гайд для установки WSL)
- 28.09.2022: Что такое float. Вещественные числа в Python. Слайсы. Методы работы со строками. Способы форматирования строк. (* успели со второй группой) Ссылки на ячейку в памяти, getrefcount(). Дисассемблирование f-string и .format().
- 05.10.2022: Изменяемые и неизменяемые последовательности: bytes, list, tuple, namedtuple, array. Цикл for. List comprehensions. Генераторы. Range. Чтение и запись в файлы. Распаковка последовательностей. Эффективность array с точки зрения памяти. (* успели со второй группой) Пример циклической ссылки.
- 12.10.2022: Dict и Set, понятие хеш-таблицы. Простанство имен программы как словарь. Counter и defaultdict из модуля collections. Использование множеств для быстрой проверки на наличие элемента. Задачи: подсчет символов в строке, дедупликация с сохранением порядка, 2-sum для произвольных массивов, общие элементы в списках.
- 19.10.2022, 02.11.2022: Понятие и синтаксис функций. Positional и keyword аргументы. Области видимости. Анонимные функции. Написание генератора с помощью yield. Замыкания (closures), пример с вычислением среднего значения на потоке. Понятие рекурсии и примеры (факториал, последовательность Фибоначчи, бинпоиск). Декораторы. Замещение исходной функции декоратором. Использование @wraps для сохранения документации декорируемой функции. Декораторы с параметрами. Примеры декораторов (время, lru cache). (на дополнительное чтение) модуль Bisect.
- 09.11.2022: Основные команды для работы с файлами и папками в терминале. Создание запускаемых файлов. Разрешения файлов в unix-подобных системах. Регулярные выражения, примеры (lookahead/lookbehind, замена времени на фразу, удаление списка стопслов).
- 16.11.2022: Принципы ООП. Классы в Python. Self. Magic методы. Написание класса Complex с частью арифметических операций. Raise для выбрасывания исключений. isinstance и issublcass. Copy и Deepcopy на примере объектов класса Complex и объектов класса Bus.
- 23.11.2022: Решение задачек перед контрольной работой
- 23.11.2022: @staticmethod, @classmethod, @property. Понятие дескриптора. Задание getter, setter, deleter для атрибутов класса.
- 07.12.2022: Элементы функционального программирования -- itemgetter, attrgetter, methodcaller, filter, map, reduce, accumulate. Наследование. Обработка исключений.
- 14.12.2022: Python WTF??!!
В конце семинаров я предлагаю решить задачи для практики по теме. Сдавать их можно до разбора на одном из последующих семинаров. Можно получить 1 балл с одного семинара. Решение части таких задач является необходимым, но недостаточным условием получения автомата.
Если не сказано обратного, бонусы принимаются в течение двух недель после семинара.
- Семинар 1:
"Забегая вперед, однострочники" - Семинар 2:
"foo:foo", "Форматирование по целочисленной точности", "Удаление стопслов в строке", "Fun". (нужно сделать 3 из 4) - Семинар 3:
"Палиндром", "Два числа с суммой N", "Три числа с суммой N" - Семинар 4:
"TF-IDF", "Анаграммы" (каждая на 1 балл) - Семинар 6:
"Декоратор-кэш" (2 балла) - Семинар 7:
"E-mails", "Погенерируем пароли" (каждая на 1 балл) - Семинар 10:
"Поисковый индекс", "Декоратор-assert типов" (каждая на 2 балла)
Рекомендуемые материалы:
- Прекраснейшая документация Python,
- Курсы Георгия Курячего (web, youtube),
- "Fluent Python, 2nd Edition", written by Luciano Ramalho,
- "Python Cookbook, 3rd Edition", David Beazley, Brian K. Jones