Об этом курсе: Python – простой, гибкий и невероятно популярный язык, который используется практически во всех областях современной разработки. С его помощью можно создавать веб-приложения, писать игры, заниматься анализом данных, автоматизировать задачи системного администрирования и многое другое. “Программирование на Python” читают разработчики, применяющие Python в проектах, которыми ежедневно пользуются миллионы людей. Курс покрывает все необходимые для ежедневной работы программиста темы, а также рассказывает про многие особенности языка, которые часто опускают при его изучении.
Курс рассчитан на как на людей, которые уже имели опыт программирования на python, так и новичков в этом деле. Однако, в рамках курса предусмотрены только лекции и домашние задания. Основная среда работы: ipython notebook. В ходе курса не объясняется, как и что устанавливать. Предполагается, что слушатели разбираются с этим сами.
Курс читается на кафедре 1С, МФТИ.
Оценка по курсу выставляется по следующей формуле: sum(балл(дз_i), i=1...10) + балл(дз_11) + доп_балл. оценка переводится в строковый маркер как обычно :).
- Лекция 1. Python Введение. Основные структуры языка.
Описание: на первой лекции разбираются основные конструкции языка, последовательности выполнения операций, циклы, переменные, объекты и их свойства (Identity, Type, Value). Garbage Collector. Изменяемые и неизменяемые объекты. Стандартные контейнеры. Функции. Библиотека collections.
Задание: знакомство со стандартными контейнерами. Пишем свой классификатор спама. - Лекция 2. Python. Введение. Строки, кодировки, файлы.
Описание: на второй лекции разбиаются кодировки, строки в python (стандартные функции str). Как работает интерпретатор со строками. Частично затрагиваются менеджеры контекста. Разбираются потоки ввода, вывода и ошибок.
Задание: Работа с разными кодировками. Создание классификатора языка текстов. - Лекция 3. Python. ООП.
Описание: третья лекция включает разбор основных принципов ООП в питон. Классы и экземпляры. Наследование в питон и алгоритм MRO. Магические методы в питон. Объясняется как осуществляется доступ к атрибутам класса.
Задание: Знакомство с магическими функциями в питон. Реализация классов CounterGetter, Vector и Table. - Лекция 4. Области видимости. Замыкания. Декораторы.
Описание: на лекции разбираются анонимные функции, области видимости переменных и контексты. Объяснение правила LEBG. Приводятся и объясняются сложные примеры замыканий с атрибутами и методами. Разбирается работа декораторов в питон. Стандартная библиотека functions. Классы декораторы и функции декораторы.
Задание: написать следующие декораторы - кэширования результатов функции (@cached), проверки типов аргументов функции (@checked) и декоратор логирования выполнения функции (@Logger). - Лекция 5. Исключения, модули, регулярные выражения.
Описание: в рамках данное лекции рассматриваются типы ошибок в питон. Как наклабывать ограничения на работу программы и __DEBUG__ режим. Исключения и их обработка в питон. Создание собственных исключений. Стандартные библиотеки для работы с исключениями. Подробный разбор работы менеджеров контекста в питон. Создание и импорт модулей и пакетов. Дается базовое представление о регулярных выражениях и как с ними работать в питон (модуль re).
Задание: реализуйте два менеджера контекстов: ContextTimer для отслеживания времени выполнения и Transaction для "безопасной" обработки данных. Напишите регулярное выражение для извлечения номеров. - Лекция 6. Итераторы и генераторы.
Описание: на этой лекции мы узнаем, как работает цикл for, что такое итератор и протоколы итерирования. Как создавать собственные итераторы. Кратко будет рассмотрено такое свойство итеаторов как исчерпаемость. Объяснение устройства и работы генераторов. Встроенные генераторы map, filter, enumerate, zip. Стандартная библиотека для работы с генераторами itertools.
Задание: напишите генератор случайных диалогов (можно несвязных). - Лекция 7. Дескрипторы и мета классы.
Описание: на этой лекции вы почувствуете все мощь питона (всю боль) и узнаете, как работают декораторы property, что такое дескриптор данных. Подробно будет рассмотрен алгоритм получения атрибутов в питон, как использовать собственные дескрипторы данных в своей программе. Во второй части лекци будут рассмотрены следующие вопросы: что такое type в питон, как создаются классы (что происходит, когда мы пишемclass SomeClass(object):
), что такое мета класс, применение мета классов. В том числе будет рассмотрен "хороший метод" (more power!) создания дескриптора с помощью мета класса.
Задание: напишите мета класс PropertyCreator для создания свойств класса. Напишите метакласс InstanceCountExeptioner, который будет следить за количеством экземпляров класса, использующих его. Напишите метакласс JSONClassCreator , который будет по json представлению строить новый класс и обратно.
- Лекция 8. Python и WEB.
Описание: в первой части лекции вы узнаете об "устройстве интернета". Клиент-серверное взаимодейстие. Краткое описание протокола http. "Вводные" слова об HTML или как браузеры показывают веб-странички. Будут рассмотрены запросы методами get и post. Как создать свой клиент на питон, или как сделать запрос данных данных у википедии или гугла. Рассказано как майнить данные и парсить HTML в питон (lxml и BeautifulSoup). Как написать собственный сервер на питон (bottle). Во второй части лекции будет доклад о проекте 2kinopoisk.ru с примерами и алгоритмами реализации конкретных подзадач при создании сайта и проблем с этим связанных.
Задание: предлагается создать сервер, который содержит в себе библиотеку книг. Также требуетсяпроверить гипотезу про статьи википедии. - Лекция 9. Multi-thread programming with python
Описание: На данной лекции даются основные знания по потокам и процессам. Разбираются библиотеки subprocess, threading, multiprocess. Приводятся краткие пояснения работы Global Interpreter Lock (GIL).
Задание: в этом задании требуется написать многопоточное приложение, которое читает статьи на вики и проводит морфологический анализ слов с помощью библиотеки pymorph2. - Лекция 10. Python и data и ml.
Описание: в первой части рассказывает о библиотеке numpy: рассматриваются основные приемы работы с массивами, модуль linalg и как с помощью numpy решать оптимизационные задачи. Во второй части приводятся примеры работы с pandas, matplotlib и seaborn. В небольшой завершающей части рассказывается про sklearn и Pipeline.
Задание: в первой части задания предлагается написать программу, которая интегрирует заданную функцию, зависящию от параметров и построить зависимость получившейся функции от парамера. Во второй части предлагается решить задачу линейного программирования. - Лекция 11. Faster python.
Описание: в первой части данной лекции расказывается о том, как можно оценивать время работы программы и как ускорить свой код. Подробно разбирается cython. Также рассмотрен пример работы pypy. В последней части лекции объясняется как можно создавать свои модули для python на c/c++ с помощью ctypes или Python.h.
Задание: является дополнительным. Предлагается ускорить реализации методов из предыдущего или первого задания (ускорить обучение классификатора и (если возможно) саму классификацию).
- Антон Емельянов - МФТИ, кафедра АТП, аспирант 1 года - [email protected]