"The joy of coding Python should be in seeing short, concise, readable classes that express a lot of action in a small amount of clear code — not in reams of trivial code that bores the reader to death."
Guido van Rossum

Мало освоить синтаксис, чтобы узнать язык программирования: нужно осознать идиомы языка и научиться их применять. В течение курса Сергей знакомит слушателей с идиомами и возможностями языка Python.
Фотография сделана осенью 2014 года в Страсбурге, за две недели до начала первого прочтения этого курса.
Лекции курса
Видеозаписи всех лекций в плейлисте на YouTube.
Начало
Кто, когда и зачем придумал язык Python. Интерпретаторы языка. Синтаксис языка с высоты птичьего полёта. Интерактивная оболочка IPython.
Всё, что вы хотели знать о функциях в Python
Синтаксис объявления функций. Упаковка и распаковка аргументов. Ключевые аргументы и аргументы по умолчанию. Распаковка и оператор присваивания. Области видимости, правило LEGB, операторы
global
и nonlocal
. Функциональное программирование, анонимные функции. Функции map
, filter
и zip
. Генераторы списков, множеств и словарей. Немного о PEP 8.Декораторы и модуль functools
Синтаксис декораторов. Декораторы с аргументами, без аргументов. Примеры использования декораторов. Модуль
functools
.Строки, байты, файлы и ввод/вывод
Строковые литералы и сырые строки. Строки и Юникод. Основные методы работы со строками. Модуль
string
. Байты. Кодировки. Файлы и файловые объекты. Методы работы с файлами. Модуль io
.Встроенные коллекции и модуль collections
И снова встроенные коллекции: кортеж, список, множество, словарь — обход в глубину, обзор методов, примеры. Почти всё про модуль
collections
: именованные кортежи, счётчики, defaultdict
, OrderedDict
.Классы, часть 1
Синтаксис объявления классов. Атрибуты, связанные и несвязанные методы,
__dict__
, __slots__
. Статические методы и методы класса. Свойства, декоратор @property. Наследование, перегрузка методов и функция super. Декораторы классов. Магические методы.Исключения и менеджеры контекста
Исключения, зачем они нужны и как их обрабатывать. Встроенные исключения и базовые классы
BaseException
и Exception
. Операторы try...except..else..finally
. Менеджеры контекста и модуль contextlib
.Итераторы, генераторы и модуль itertools
Два протокола итераторов:
__next__
+ __iter__
и __getitem__
. Итераторы и цикл for
, а также операторы in
и not in
. Генераторы, оператор-выражение yield
. Генераторы как: итераторы, сопрограммы, менеджеры контекста. Модуль itertools
.Модули, пакеты и система импорта
Модули. Операторы
import
и from ... import
. Пакеты. Относительный и абсолютный импорт. __init__
-фасад. И снова оператор import
— обход в глубину.Классы, часть 2
Дескрипторы: что-как-зачем. Конструктор
__new__
, класс type
и метаклассы. Наследование встроенных типов. Модули abc
и collections.abc
.Тестирование
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль
unittest
. Пакет py.test
— на порядок лучше. Тестирование свойств и пакет hypothesis
.Быстрее, Python, ещё быстрее
Измерение времени работы кода на Python с помощью модулей
timeit
, cProfile
и line_profiler
. Немного о NumPy. JIT и AOT компиляция кода на Python на примере Numba и Cython.Многопоточность и GIL
Модули
threading
, queue
и concurrent.futures
. Использование потоков для параллельных вычислений на Python. GIL. Параллельность и конкурентность. Модуль asyncio
. Модуль multiprocessing
.Что дальше
Практические задания этого курса доступны только студентам CS центра, учащиеся набираются раз в год, весной. Тем, кто по каким-то причинам не может проходить обучение в центре, мы рекомендуем не останавливаться на просмотре видео курса, а попробовать решать на Python свои повседневные задачи, ведь главное в изучении языка — это практика.
Для разных языков есть списки хороших библиотек, например, Awesome Java, Awesome R и Awesome C++. Конечно же, такой список есть и для Python. В следующий раз, когда вам потребуется библиотека для работы с базой данных, логирования или анализа изображений, смело идите в соответствующий раздел списка за вдохновением.