Курс ориентирован на людей, уже знакомых с каким-либо языком программирования, например, Java или C++.
Лектор: Сергей Лебедев.
Домашние задания
Рекомендации к оцениванию домашних заданий. Оценивать по двум критериям: корректность и идиоматичность, то есть решение должно правильно работать и соответствовать руководству по стилю.
Хорошие книги про Python
- David M. Beazley, Python Essential Reference, 2009.
- Mark Lutz, Learning Python, 5th edition, 2013 (значительная часть 4-го издания также будет релевантной).
- David M. Beazley, Brian K. Jones, Python Cookbook, 3rd edition, 2013.
Кто, когда и зачем придумал язык Python. Интерпретаторы языка. Синтаксис языка с высоты птичьего полёта. Интерактивная оболочка IPython.
Лекция 2. Всё, что вы хотели знать о функциях в Python.
Синтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы global
и nonlocal
. Функциональное программирование, анонимные функции. Функции map
, filter
и zip
. Генераторы списков, множеств и словарей. Немного о PEP 8.
Лекция 3. Декораторы и модуль functools.
Синтаксис декораторов. Декораторы с аргументами, без аргументов. Примеры использования декораторов. Модуль functools
.
Лекция 4. Строки, байты, файлы и ввод/вывод.
Строковые литералы и сырые строки. Строки и Юникод. Основные методы работы со строками. Модуль string
. Байты. Кодировки. Файлы и файловые объекты. Методы работы с файлами. Модуль io
.
Лекция 5. Встроенные коллекции и модуль collections.
И снова встроенные коллекции: кортеж, список, множество, словарь - обход в глубину, обзор методов, примеры. Почти всё про модуль collections
: именованные кортежи, счётчики, defaultdict
, OrderedDict
.
Лекция 6. Классы 1.
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы, __dict__
, __slots__
. Статические методы и методы класса. Свойства, декоратор @property
. Наследование, перегрузка методов и функция super
. Декораторы классов. Магические методы.
Лекция 7. Исключения и менеджеры контекста.
Исключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы BaseException
и Exception
. Операторы try...except..else..finally
. Менеджеры контекста и модуль contextlib
.
Лекция 8. Итераторы, генераторы и модуль itertools.
Два протокола итераторов: __next__
+ __iter__
и __getitem__
. Итераторы и цикл for
, а также операторы in
и not in
. Генераторы, оператор-выражение yield
. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools
.
Лекция 9. Модули, пакеты и система импорта.
Модули. Операторы import
и from ... import
. Пакеты. Относительный и абсолютный импорт. __init__
-фасад. И снова оператор import
- обход в глубину.
Лекция 10. Классы 2.
Дескрипторы: что-как-зачем. Конструктор __new__
, класс type
и метаклассы. Наследование встроенных типов. Модули abc
и collections.abc
.
Лекция 11. Тестирование.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest
. Пакет py.test
- на порядок лучше. Тестирование свойств и пакет hypothesis
.
Лекция 12. Быстрее, Python, ещё быстрее.
Измерение времени работы кода на Python с помощью модулей timeit
, cProfile
и line_profiler
. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.
Лекция 13. Многопоточность и GIL.
Модули threading
, queue
и concurrent.futures
. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio
. Модуль multiprocessing
.