Tuple[Callable, Any, ...]

Опубликовано 29 января 2018 в Python • Помечено typing, mypy, python

Подсказки с типами могут сильно помочь в работе с большим проектом на Питоне. Тем не менее, иногда они требуют рефакторинга кода. Я писал об этом в прошлом году в этой статье, но тогда я не смог найти хорошего примера иллюстрирующего то, что я хочу сказать.


Продолжить чтение

Как внедрить mypy в проекте на Python 2.7

Опубликовано 11 декабря 2017 в Python • Помечено typing, mypy, python

Я многократно писал, что описание типов в питоне помогает в работе с большими и средними проектами. При этом, если внедрять типы, то нужно регулярно делать статический анализ, причем в CI. А вот это уже не так-то просто внедрить. Эта статья - мой рассказ о том какие трудности придется преодолеть в процессе внедрения.


Продолжить чтение

Что почитать о asyncio. 9 полезных ссылок

Опубликовано 20 октября 2017 в Python • Помечено python, asyncio, aiohttp

Asyncio — полезная библиотека. Но разобраться с ней не так-то просто. Документации по большей части недостаточно. Хочется примеров. Хочется подробных объяснений. Последние несколько выходных я потратил на эксперименты с этой библиотекой. Во время чего в Pocket осели довольно интересные ссылки, которыми я хочу поделиться.


Продолжить чтение

Поддержка целостности проекта в Python требует усилий

Опубликовано 06 октября 2017 в Python • Помечено python

Python позволяет программисту довольно много. Это очень выразительный язык. Его динамическая природа даёт возможность делать элегантные решения, которые довольно сложно представить, к примеру, в Java.

Тем не менее за все надо платить. При росте кодовой базы, проекты на Python начитают требовать всё больше и больше ресурсов на поддержание своей целостности. Без некоторых усилий проект начинает разваливаться на куски.


Продолжить чтение

Хэш-функция для функции в Python

Опубликовано 12 сентября 2017 в Python • Помечено python, cpython

Пару недель назад один из моих коллег задал вопрос: можно ли использовать функцию в качестве ключей словаря? Да, можно. У каждой функции в Питоне есть хеш. Но как он считается? На основе имени функции? На основе байт-кода? В действительности, хэш считается трансформацией над указателем на объект функции. Тем не менее, не так-то легко отыскать эти расчеты в коде CPython.


Продолжить чтение