Oh My Py

Все о чистом коде на Python.

Многозначительное многоточие в Python

Что такое Ellipsis и как его используют.

Летающая свинья, или протоколы в Python

Структурная типизация с помощью протоколов.

Случайные числа и последовательности в Python

Там намного больше, чем просто randint()

Компактные объекты в Python

Кортеж против датакласса, пока не вмешается numpy

Постраничный итератор в Python

Обходим датасет страницами для быстрой пакетной обработки.

Закешировать результат вычислений в Python

С помощью декоратора @functools.lru_cache

Как устроен список в Python

И где у него константное время, а где линейное.

Поэлементно сравнить коллекции в Python

С помощью множества (set).

«Отнаследовать» функцию от существующей в Python

С помощью functool.partial()

Второй язык для питониста

Кто из популярных языков компенсирует недостатки питона?

Задачка об итераторе на Python

Как подобрать коллектив единомышленников с помощью random и iter

Python. Грамотно работать с любым диапазоном

С помощью range() и его неожиданных возможностей.

Python. Проверить, входит ли элемент в коллекцию

С помощью списка, множества и фильтра Блума.

Зачем читать исходники стандартной библиотеки

Чтобы не остаться в продакшене с пустым кешем посреди рабочего дня.

Python. Прочитать произвольную строку из файла

С помощью linecache.getline()

Python. Отрезать строке голову и хвост

С помощью removeprefix() и removesuffix()

Как сделать классный Python-пакет

Такой, чтоб не стыдно было показать коллегам.

Автоматизация задач в Python-проекте

Через мейкфайлы (да, они хороши).

Python. Создать словарь по списку ключей

С помощью dict.from_keys()

Python. Пронумеровать элементы коллекции

С помощью enumerate()

Быстрый язык ≠ быстрый код

Теория алгоритмов бьёт компилятор.

Python. Cортировать в конце или держать отсортированным?

Почему бинарный поиск не всегда быстрый.

Python. Быстро найти элемент коллекции

С помощью bisect.bisect()

Python. Узнать день недели 40 лет назад

С помощью calendar

Python. Создать полный дубль коллекции

С помощью copy.deepcopy()

Python. Сегодня == сейчас

Работа с датой-временем не слишком удалась в Питоне ツ

Python. Обработать заявки с учётом приоритетов

С помощью модуля heapq

Python. Выбрать топ-k элементов списка

С помощью heapq.nlargest()

Python. Объединить отсортированные списки в один

С помощью heapq.merge()

Python. Кортеж здорового человека

С помощью collections.namedtuple

Python. Из десятичной дроби — в обычную

float.as_integer_ratio() не так прост, как кажется.

Python. Хранить последние N объектов

С помощью deque(maxlen).

Python. Подвох в функции sum()

«unsupported operand type(s) for +» — что происходит вообще?

Python. Операции со статистикой

С помощью collections.Counter

Python. Посчитать количество объектов каждого типа

С помощью collections.defaultdict или collections.Counter

Python. Умолчательные значения настроек

С помощью collections.ChainMap

Python. Enum здорового человека

Его придумали не просто так.

Python. Исходники стандартной библиотеки

Загляните в них.

Чистый код. Единообразие в именах

Просто хороших имён недостаточно.

Python. Шаблонизатор для бедных

С помощью string.Template

Python. Разбить строку на слова с учётом кавычек

С помощью shlex.split()

Чистый код. Похожие названия методов

Как не надо называть похожие методы.

Python. Кратко напечатать развесистую структуру

С помощью pprint.pprint() и аргумента depth.

Python. Сравнить строки на похожесть

С помощью модуля difflib.

Python. Простое сравнение с шаблоном

С помощью модуля fnmatch.

Python. Все слова с прописной буквы

С помощью string.capwords()

Python. Отформатировать текст для консоли

С помощью модуля textwrap.

Python. Сделать превьюшку длинного текста

С помощью textwrap.shorten()

Oh My Py — всё о стандартной библиотеке Python

Голубь Френк раскрывает возможности стандартной библиотеки Python, о которых вам лучше бы знать.