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