Обработка ошибок и повторные попытки
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
👎1
16 сентября в Arena Breakout: Infinite выходит седьмой сезон — «Утопия»
Если не сталкивались с игрой: это бесплатный тактический шутер про вылазки за добычей. Заходишь на локацию со своим снаряжением, набираешь лут и пытаешься уйти живым. Погиб — потерял всё, что было с собой.
Что завозят в новом сезоне:
• Заражённая зона — три карты превращаются в биоопасные локации с ночью, туманом и ливнем, по ним бродят шесть видов мутантов. Другие игроки при этом никуда не делись
• Режим на выживание — отдельный PvE без риска: снаряжение с собой не берёшь и ничего не теряешь, просто отбиваешься от волн и открываешь усиления
• Торговец прямо в рейде — можно обменять припасы и разведданные или докупить снаряжение
• Два новых ствола, сезонные обвесы и переработанная стрельба: дальность выше, попадания в голову ощутимее
• На старте бесплатно выдают прокачиваемую сапёрную лопату, скины и билеты, а между игроками разыгрывают 200 000 очков
Игра бесплатная, качается в Steam, российский регион поддерживается → https://abi.go.link/2wzTb
Если не сталкивались с игрой: это бесплатный тактический шутер про вылазки за добычей. Заходишь на локацию со своим снаряжением, набираешь лут и пытаешься уйти живым. Погиб — потерял всё, что было с собой.
Что завозят в новом сезоне:
• Заражённая зона — три карты превращаются в биоопасные локации с ночью, туманом и ливнем, по ним бродят шесть видов мутантов. Другие игроки при этом никуда не делись
• Режим на выживание — отдельный PvE без риска: снаряжение с собой не берёшь и ничего не теряешь, просто отбиваешься от волн и открываешь усиления
• Торговец прямо в рейде — можно обменять припасы и разведданные или докупить снаряжение
• Два новых ствола, сезонные обвесы и переработанная стрельба: дальность выше, попадания в голову ощутимее
• На старте бесплатно выдают прокачиваемую сапёрную лопату, скины и билеты, а между игроками разыгрывают 200 000 очков
Игра бесплатная, качается в Steam, российский регион поддерживается → https://abi.go.link/2wzTb
Алгоритм Евклида на Python
Алгоритм Евклида - элегантное решение для нахождения НОД
Расширенный алгоритм Евклида особенно полезен в криптографии и при решении линейных диофантовых уравнений. Я использовал его при реализации алгоритма RSA для учебного проекта.
Разъяснивший Python
Алгоритм Евклида - элегантное решение для нахождения НОД
Расширенный алгоритм Евклида особенно полезен в криптографии и при решении линейных диофантовых уравнений. Я использовал его при реализации алгоритма RSA для учебного проекта.
Разъяснивший Python
Функция для измерения времени выполнения кода
Отладка производительности - частая головная боль. Простой декоратор для измерения времени выполнения функций спасает в таких ситуациях.
Можно модифицировать этот декоратор, добавляя вывод аргументов функции или интеграцию с системой логирования проекта.
Разъяснивший Python
Отладка производительности - частая головная боль. Простой декоратор для измерения времени выполнения функций спасает в таких ситуациях.
Можно модифицировать этот декоратор, добавляя вывод аргументов функции или интеграцию с системой логирования проекта.
Разъяснивший Python
POST запросы и отправка данных
Обратите внимание на параметр
Разъяснивший Python
Обратите внимание на параметр
json= вместо data=. Он автоматически сериализует Python-словарь в JSON и устанавливает правильный заголовок Content-Type.Разъяснивший Python
Объяснение:
functools.wraps обновляет обёртку, копируя метаданные оригинальной функции (name, __doc__ и т.д.). Без wraps мы бы получили wrapper None. Важно использовать wraps для сохранения информации о функции, особенно при отладке и документации.
Разъяснивший Python
functools.wraps обновляет обёртку, копируя метаданные оригинальной функции (name, __doc__ и т.д.). Без wraps мы бы получили wrapper None. Важно использовать wraps для сохранения информации о функции, особенно при отладке и документации.
Разъяснивший Python
7 пакетов Python для анализа и улучшения кода
Чтобы помочь программистам преодолеть препятствия, существует множество полезных инструментов и пакетов Python, которые специально разработаны для анализа и улучшения кода. В этой статье автор рассматривает 7 таких.
Читать…
Разъяснивший Python
Чтобы помочь программистам преодолеть препятствия, существует множество полезных инструментов и пакетов Python, которые специально разработаны для анализа и улучшения кода. В этой статье автор рассматривает 7 таких.
Читать…
Разъяснивший Python
Список с условием (List Comprehension)
List comprehension — один из самых мощных инструментов Python, позволяющий создавать списки одной строкой кода.
Этот подход не только компактнее, но и быстрее традиционных циклов. Важно не злоупотреблять сложными условиями — код должен оставаться читаемым. Однажды я переписал цикл из 15 строк в одну строку list comprehension, и код стал работать на 30% быстрее.
Разъяснивший Python
List comprehension — один из самых мощных инструментов Python, позволяющий создавать списки одной строкой кода.
Этот подход не только компактнее, но и быстрее традиционных циклов. Важно не злоупотреблять сложными условиями — код должен оставаться читаемым. Однажды я переписал цикл из 15 строк в одну строку list comprehension, и код стал работать на 30% быстрее.
Разъяснивший Python
Многоточие в Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали.
Разъяснивший Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python
>>> ...
# Вывод покажет: Ellipsis
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали.
Разъяснивший Python
Спортивное программирование: что это, зачем и какие задачи приходится решать
Это не программирование ради программирования, как можно было бы подумать, — соревнования помогают участникам повысить профессиональный уровень, научившись решать сложные задачи из самых разных направлений разработки. Так что такое спортивное программирование и что о нём стоит знать новичку?
Читать…
Разъяснивший Python
Это не программирование ради программирования, как можно было бы подумать, — соревнования помогают участникам повысить профессиональный уровень, научившись решать сложные задачи из самых разных направлений разработки. Так что такое спортивное программирование и что о нём стоит знать новичку?
Читать…
Разъяснивший Python
Data classes
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
- возврат нескольких значений или словарей;
- класс данных требует минимального количества кода;
- возможность сравнения классов данных;
- возможность распечатать класс данных для отладки при помощи repr;
- снижение вероятности ошибок в связи с требованием класса данных type hints.
Разъяснивший Python
Начиная с версии 3.7, Python поставляется с классами данных. У них есть несколько преимуществ по сравнению с обычными классами или другими альтернативами:
- возврат нескольких значений или словарей;
- класс данных требует минимального количества кода;
- возможность сравнения классов данных;
- возможность распечатать класс данных для отладки при помощи repr;
- снижение вероятности ошибок в связи с требованием класса данных type hints.
Разъяснивший Python
List Comprehensions
List comprehension может заменить неэстетичные циклы, используемые для заполнения списка. Синтаксис выглядит следующим образом:
Поскольку здесь можно использовать выражения, вам доступна работа с математикой, вызов внешней функции и, наконец, вы сможете использовать «if» для фильтрации списка.
Разъяснивший Python
List comprehension может заменить неэстетичные циклы, используемые для заполнения списка. Синтаксис выглядит следующим образом:
[ expression for item in list if conditional ]
Поскольку здесь можно использовать выражения, вам доступна работа с математикой, вызов внешней функции и, наконец, вы сможете использовать «if» для фильтрации списка.
Разъяснивший Python