Обработка ошибок и повторные попытки
API могут быть нестабильными, поэтому всегда стоит реализовать механизм повторных попыток.
Экспоненциальная задержка между попытками (
Разъяснивший Python
API могут быть нестабильными, поэтому всегда стоит реализовать механизм повторных попыток.
Экспоненциальная задержка между попытками (
backoff_factor * (2 ** retries)) помогает избежать перегрузки сервера и дает ему время восстановиться.Разъяснивший Python
Проверка типов данных
При отладке или работе с незнакомым API бывает полезно узнать тип и структуру объекта.
Этот простой инструмент неоднократно выручал меня при работе с API, возвращающими сложно структурированные данные.
Разъяснивший Python
При отладке или работе с незнакомым API бывает полезно узнать тип и структуру объекта.
Этот простой инструмент неоднократно выручал меня при работе с API, возвращающими сложно структурированные данные.
Разъяснивший Python
Безопасное получение вложенных значений
Доступ к вложенным атрибутам объектов или вложенным ключам словарей часто приводит к ошибкам.
Эта функция может сократить количество проверок в коде на порядок, сделав его намного чище и понятнее.
Разъяснивший Python
Доступ к вложенным атрибутам объектов или вложенным ключам словарей часто приводит к ошибкам.
Эта функция может сократить количество проверок в коде на порядок, сделав его намного чище и понятнее.
Разъяснивший Python
Анализ производительности популярных подходов с бенчмарками часть 1
Интуитивные представления о производительности нередко бывают ошибочными. Python - язык с множеством способов решения одной задачи, и выбор правильного подхода может дать огромный прирост производительности. Давайте сравним некоторые распространенные операции с помощью простых бенчмарков.
Результаты могут удивить:
list comprehension стабильно показывает результаты на 15-20% лучше, чем
Разъяснивший Python
Интуитивные представления о производительности нередко бывают ошибочными. Python - язык с множеством способов решения одной задачи, и выбор правильного подхода может дать огромный прирост производительности. Давайте сравним некоторые распространенные операции с помощью простых бенчмарков.
Результаты могут удивить:
join обычно в 10-15 раз быстрее, чем последовательное использование оператора +. Причина проста - строки в Python неизменяемы, и каждая операция + создает новый объект.list comprehension стабильно показывает результаты на 15-20% лучше, чем
filter() с lambda-функцией. Однако этот разрыв может меняться в зависимости от сложности фильтрующей функции. Особенно впечатляет разница при доступе к элементам словаряРазъяснивший Python
Анализ производительности популярных подходов с бенчмарками часть 2
Метод
Но не всегда стандартные методы лучше. Например, при сортировке списков с пользовательским ключом, использование
Разъяснивший Python
Метод
dict.get() обычно работает примерно на 30-40% быстрее, чем явная проверка через if key in dict, и примерно в 2-3 раза быстрее, чем использование блока try-except.Но не всегда стандартные методы лучше. Например, при сортировке списков с пользовательским ключом, использование
operator.itemgetter() может быть на 10-15% быстрее lambda-функций.Разъяснивший Python
Функция проверки чисел на простоту
Оптимизированный алгоритм для проверки простоты числа.
В этом алгоритме я использую свойство, что все простые числа (кроме 2 и 3) можно представить в виде 6k ± 1. Это сокращает количество проверок примерно в 3 раза по сравнению с наивным перебором до квадратного корня.
Разъяснивший Python
Оптимизированный алгоритм для проверки простоты числа.
В этом алгоритме я использую свойство, что все простые числа (кроме 2 и 3) можно представить в виде 6k ± 1. Это сокращает количество проверок примерно в 3 раза по сравнению с наивным перебором до квадратного корня.
Разъяснивший Python