Программирование на Python
Санкт-Петербург / осень 2014, посмотреть все семестры

Курс ориентирован на людей, уже знакомых с каким-либо языком программирования, например, Java или C++.

Логистика курса

Все активности в рамках курса будут оцениваться баллами. Необходимое количество баллов для получения зачёта будет объявлено позже.

Домашние задания

Домашние задания будут выдаваться после лекции. Количество баллов за домашнее задание зависит от времени сдачи:

  • в течение недели после лекции (до 23:59 вторника) за каждую задачу из домашнего задания можно будет получить максимум 4 балла,
  • в течение второй стоимость задачи будет 2 баллa.

Сдавать домашнее задание позже, чем через две недели, смысла нет: оно будет оценено 0 баллов.

Задачи в домашнем задании будут оцениваться по двум критериям: корректность и идиоматичность, то есть решение должно правильно работать и соответствовать руководству по стилю.

Тесты

В начале каждой лекции (кроме первой) будет короткий тест по материалам предыдущей лекции. За полностью правильный тест можно получить 4 балла.

Для желающих улучшить свои результаты в конце семестра планируется большой тест. При написании большого теста все баллы за лекционные тесты аннулируются.

Хорошие книги про Python

  1. David M. Beazley, Python Essential Reference, 2009.
  2. Mark Lutz, Learning Python, 5th edition, 2013 (значительная часть 4-го издания также будет релевантной).
  3. David M. Beazley, Brian K. Jones, Python Cookbook, 3rd edition, 2013.

Предварительная программа

  1. Кто, когда и зачем придумал язык Python. 2 или 3 -- вот в чём вопрос. Интерпретаторы языка Python. Синтаксис языка с высоты птичьего полёта.
  2. Всё, что вы хотели знать о функциях в Python:
    • именованные и лямбда-функции;
    • позиционные и ключевые аргументы и почему они не отличаются;
    • упаковка и распаковка аргументов, когда и зачем;
    • map, filter и почему вам не нужен reduce;
    • декораторы.
  3. Строки в Python: bytes, str -- зачем так много. Кодировки, файлы и file-like объекты: обертки над строками и последовательностями байт, архивы, HTTP ресурсы.
  4. Классы, атрибуты, методы и прочее ООП
    • конструктор и инициализатор;
    • старые и новые классы или лирическое отступление об истории языка;
    • атрибуты класса и объекта;
    • магические методы и перегрузка операторов;
    • __dict__ объекта, класса или что происходит, когда вы пишете foo.bar.baz;
    • наследование, super
    • множественное наследование, mro.
    • наследование встроенных типов: проблемы и решения.
    • дескрипторы: когда и зачем.
  5. Исключения. Модули и (возможно) протокол импортеров.
  6. Итераторы и генераторы: протокол итераторов, генераторы и ключевые слова yield и yield from, BIG DATA и itertools.
  7. Метаклассы -- страх и ужас любого программиста на Python.
  8. Подробней о встроенных коллекциях. Модули collections и heapq.
  9. Многопоточность, мультипроцессорность и GIL. asyncio.
  10. Высокопроизводительный Python или, что делать, когда Python тормозит.

Темы, которые со временем найдут своё место в лекциях

  • Интроспекция, модуль inspect.
  • Тестирование и документация кода на Python, как можно и чем лучше: doctest, unittest, nose, py.test.
  • Распространение кода на Python: distutils, setuptools, яица и колёса.
  • Обзор стандартной библиотеки.
  • Сериализация Python объектов.
  • Немного о реализации CPython.
  • Наука + Python == <3, IPython Notebook, numpy, scipy, scikit-*, pandas и matplotlib, ggplot.
Дата и время Название Место Материалы
17 сентября
18:30–19:50
Python, начало, лекция Таймс, ауд. с белыми досками слайды
24 сентября
18:30–19:50
Всё, что вы хотели знать о функциях в Python, лекция Таймс, ауд. с белыми досками слайды
01 октября
18:30–19:50
Декораторы и модуль functools, лекция Таймс, ауд. с белыми досками слайды
08 октября
18:30–19:50
Строки, байты, файлы и ввод/вывод, лекция Таймс, ауд. с белыми досками слайды
15 октября
18:30–19:50
Встроенные коллекции и модуль collections, лекция Таймс, ауд. с белыми досками слайды
22 октября
18:30–19:50
Классы 1, лекция Таймс, ауд. с белыми досками слайды
05 ноября
18:30–19:50
Модули, исключения и менеджеры контекста, лекция Таймс, ауд. с белыми досками слайды
12 ноября
18:30–19:50
Итераторы, генераторы и модуль itertools, лекция Таймс, ауд. с белыми досками слайды
19 ноября
18:30–19:50
Классы 2, лекция Таймс, ауд. с белыми досками слайды
03 декабря
18:30–19:50
Документация и тестирование, лекция Таймс, ауд. с белыми досками слайды
03 декабря
20:00–21:20
Быстрее, Python, ещё быстрее, лекция Таймс, ауд. с белыми досками слайды
10 декабря
18:30–19:50
Многопоточность и GIL, лекция Таймс, ауд. с белыми досками слайды