Разъяснивший Python
Open in Telegram
Твой проводник в омут Python'а Ссылка: @Portal_v_IT Сотрудничество: @oleginc
Show more6 913
Subscribers
-224 hours
-247 days
-5130 days
Posts Archive
6 911
Список с условием (List Comprehension)
List comprehension — один из самых мощных инструментов Python, позволяющий создавать списки одной строкой кода.
Этот подход не только компактнее, но и быстрее традиционных циклов. Важно не злоупотреблять сложными условиями — код должен оставаться читаемым. Однажды я переписал цикл из 15 строк в одну строку list comprehension, и код стал работать на 30% быстрее.
Разъяснивший Python
6 911
Repost from Находки Программиста
📣 Игровой коврик для мыши с 3D-подставкой для запястья
Цена: ~1300₽
Рейтинг: 5😀
Купили: 58 👤
🖱 Заказать
Игровой коврик для мыши в стиле аниме-панк с мягкой 3D-подставкой под запястье сочетает необычный дизайн и эргономичную поддержку руки, делая рабочее или игровое место комфортнее и ярче.
#AliExpress #коврик #мышь
Находки Программиста
6 911
7 пакетов Python для анализа и улучшения кода
Чтобы помочь программистам преодолеть препятствия, существует множество полезных инструментов и пакетов Python, которые специально разработаны для анализа и улучшения кода. В этой статье автор рассматривает 7 таких.
Читать…
Разъяснивший Python
6 911
Объяснение:
functools.wraps обновляет обёртку, копируя метаданные оригинальной функции (name, __doc__ и т.д.). Без wraps мы бы получили wrapper None. Важно использовать wraps для сохранения информации о функции, особенно при отладке и документации.
Разъяснивший Python
6 911
POST запросы и отправка данных
Обратите внимание на параметр
json= вместо data=. Он автоматически сериализует Python-словарь в JSON и устанавливает правильный заголовок Content-Type.
Разъяснивший Python6 911
6 911
Функция для измерения времени выполнения кода
Отладка производительности - частая головная боль. Простой декоратор для измерения времени выполнения функций спасает в таких ситуациях.
Можно модифицировать этот декоратор, добавляя вывод аргументов функции или интеграцию с системой логирования проекта.
Разъяснивший Python
6 911
Алгоритм Евклида на Python
Алгоритм Евклида - элегантное решение для нахождения НОД
Расширенный алгоритм Евклида особенно полезен в криптографии и при решении линейных диофантовых уравнений. Я использовал его при реализации алгоритма RSA для учебного проекта.
Разъяснивший Python
6 911
16 сентября в Arena Breakout: Infinite выходит седьмой сезон — «Утопия»
Если не сталкивались с игрой: это бесплатный тактический шутер про вылазки за добычей. Заходишь на локацию со своим снаряжением, набираешь лут и пытаешься уйти живым. Погиб — потерял всё, что было с собой.
Что завозят в новом сезоне:
• Заражённая зона — три карты превращаются в биоопасные локации с ночью, туманом и ливнем, по ним бродят шесть видов мутантов. Другие игроки при этом никуда не делись
• Режим на выживание — отдельный PvE без риска: снаряжение с собой не берёшь и ничего не теряешь, просто отбиваешься от волн и открываешь усиления
• Торговец прямо в рейде — можно обменять припасы и разведданные или докупить снаряжение
• Два новых ствола, сезонные обвесы и переработанная стрельба: дальность выше, попадания в голову ощутимее
• На старте бесплатно выдают прокачиваемую сапёрную лопату, скины и билеты, а между игроками разыгрывают 200 000 очков
Игра бесплатная, качается в Steam, российский регион поддерживается → https://abi.go.link/2wzTb
6 911
Функция проверки чисел на простоту
Оптимизированный алгоритм для проверки простоты числа.
В этом алгоритме я использую свойство, что все простые числа (кроме 2 и 3) можно представить в виде 6k ± 1. Это сокращает количество проверок примерно в 3 раза по сравнению с наивным перебором до квадратного корня.
Разъяснивший Python
6 911
Анализ производительности популярных подходов с бенчмарками часть 2
Метод
dict.get() обычно работает примерно на 30-40% быстрее, чем явная проверка через if key in dict, и примерно в 2-3 раза быстрее, чем использование блока try-except.
Но не всегда стандартные методы лучше. Например, при сортировке списков с пользовательским ключом, использование operator.itemgetter() может быть на 10-15% быстрее lambda-функций.
Разъяснивший Python6 911
Анализ производительности популярных подходов с бенчмарками часть 1
Интуитивные представления о производительности нередко бывают ошибочными. Python - язык с множеством способов решения одной задачи, и выбор правильного подхода может дать огромный прирост производительности. Давайте сравним некоторые распространенные операции с помощью простых бенчмарков.
Результаты могут удивить:
join обычно в 10-15 раз быстрее, чем последовательное использование оператора +. Причина проста - строки в Python неизменяемы, и каждая операция + создает новый объект.
list comprehension стабильно показывает результаты на 15-20% лучше, чем filter() с lambda-функцией. Однако этот разрыв может меняться в зависимости от сложности фильтрующей функции. Особенно впечатляет разница при доступе к элементам словаря
Разъяснивший Python6 911
Безопасное получение вложенных значений
Доступ к вложенным атрибутам объектов или вложенным ключам словарей часто приводит к ошибкам.
Эта функция может сократить количество проверок в коде на порядок, сделав его намного чище и понятнее.
Разъяснивший Python
6 911
Проверка типов данных
При отладке или работе с незнакомым API бывает полезно узнать тип и структуру объекта.
Этот простой инструмент неоднократно выручал меня при работе с API, возвращающими сложно структурированные данные.
Разъяснивший Python
6 911
Обработка ошибок и повторные попытки
API могут быть нестабильными, поэтому всегда стоит реализовать механизм повторных попыток.
Экспоненциальная задержка между попытками (
backoff_factor * (2 ** retries)) помогает избежать перегрузки сервера и дает ему время восстановиться.
Разъяснивший Python6 911
Ломаем текстовую капчу на примере VK или брутфорсинг до сих пор актуален
В этой статье-мануале автор покажет, как создать собственную нейросеть по распознаванию текстовых капч, имея под рукой домашний компьютер, базовые знания в python и немножко примеров капч.
Читать...
Разъяснивший Python
6 911
Базовые HTTP запросы с requests
Библиотека
requests - настоящая находка для разработчика. Она делает HTTP-запросы интуитивно понятными
Я всегда добавляю параметр timeout, чтобы избежать зависания программы при проблемах с сетью. Однажды потерял два часа, выясняя, почему скрипт "завис" - оказалось, что без таймаута запрос к недоступному серверу просто ждал вечно.
Разъяснивший Python6 911
Передача дополнительных аргументов
Часто функции обработки нужны дополнительные параметры.
Ловушка: передача негпикличных объектов между процессами. Python использует сериализацию для передачи данных между процессами, но не все объекты можно сериализовать стандартными средствами. Для сложных случаев стоит использовать библиотеки вроде
dill или cloudpickle.
Эти инструменты параллельных вычислений стали неотъемлемой частью моего арсенала при работе с большими объемами данных. Конечно, добавление параллелизма усложняет код и отладку, но производительность часто стоит этих усилий, особенно когда речь идет о сокращении времени выполнения с часов до минут.
Разъяснивший Python6 911
⚡️1 МЛН $ ЗА СОВЕТ
Когда PepsiCo выходила на рынок, его главным конкурентом была The Coca-Cola Company
Со временем стало ясно, что PepsiCo не выдержит конкуренцию с этим гигантом.
Но, однажды в компанию пришел человек, который сказал, что за 1 млн $ и место генерального директора расскажет секрет как увеличить прибыль компании в сотни раз.
Конечно, никто платить не стал, вызвали лучших умов и поручили им найти этот секрет.
Однако, когда у них ничего не вышло, акционеры PepsiCo скрепя сердце выполнили условия того странного человека
🤯 В ответ они получили листок бумаги, на котором были написаны 3 слова:
6 911
Продвинутый подход с concurrent.futures
Модуль
concurrent.futures, появившийся в Python 3.2, предоставляет более высокоуровневый интерфейс
Этот подход дает три ключевых преимущества:
1. Обработка результатов по мере готовности через as_completed().
2. Более удобная обработка исключений.
3. Простое переключение между процессами и потоками (для IO-bound задач достаточно заменить .ProcessPoolExecutor на ThreadPoolExecutor)
Разъяснивший Python