enumerate()
в Python и зачем он нужен?enumerate()
— это встроенная функция, которая добавляет счётчик к итерируемому объекту. Полезна, когда нужно получить и индекс, и значение при переборе списка, строки или любого итератора.fruits = ['яблоко', 'банан', 'вишня']
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
0: яблоко
1: банан
2: вишня
🗣️ Без enumerate() пришлось бы вручную управлять счётчиком. Это делает код чище, читаемее и более "питоничным".
Please open Telegram to view this post
VIEW IN TELEGRAM
Материалы лекции про конфигурационные файлы — все основные аспекты написания и использования конфигов для самых маленьких, примеры кода на python.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🔗 Логику пиши отдельно от инфраструктуры
Если твой код тесно связан с базой, API или файлами — он плохо тестируется и трудно меняется.
👉 Совет: отделяй логику от среды. Пиши так, чтобы алгоритмы можно было прогнать без подключения к реальному сервису. Это ускорит разработку и позволит использовать код повторно, где угодно.
Если твой код тесно связан с базой, API или файлами — он плохо тестируется и трудно меняется.
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассказывается, как настроить автоматический деплой Telegram-бота на сервер с использованием GitHub Actions. Это поможет ускорить обновление кода и минимизировать ошибки при ручной загрузке.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье рассматривается уникальная карточная игра с нулевой дисперсией, где стратегия Келли работает без риска. Разбирается механизм ставок, анализ игры и её математическая основа, описанная Томасом Кавером.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбираемся как упаковывать данные в диаграмму Sankey, от этапа проектирования до сборки финальных кортежей.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
sys.setrecursionlimit()
в Python и когда его нужно использовать?Функция
sys.setrecursionlimit()
позволяет вручную изменить максимальную глубину рекурсии в Python. По умолчанию это значение составляет 1000, но при работе с глубокими рекурсивными алгоритмами (например, при обходе дерева или графа) может потребоваться больше.import sys
sys.setrecursionlimit(2000)
def recurse(n):
if n == 0:
return "Готово"
return recurse(n - 1)
print(recurse(1500)) # Без изменения лимита была бы ошибка RecursionError
🗣️ Этот метод полезен в ситуациях, где нельзя переписать код на итеративный стиль, но нужно избежать ошибки переполнения стека. Однако его следует использовать с осторожностью — слишком высокий лимит может привести к краху интерпретатора.
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье рассмотрим, почему groupby().first() в pandas — не такая уж безопасная и очевидная штука, как может показаться. Особенно когда нужно достать первую строку группы в точности, как она была в датафрейме — с NaN, с порядком, без сюрпризов.
Но для начала рассмотрим отличия first от других подобных методов.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Показываю, как мы собрали MCP-сервер, который помогает чатам с LLM-ами вытаскивать данные из Битрикс24, например из CRM, и нормально отвечать пользователю на основе бизнес-контекста.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываю, как часто повторяющиеся команды в Unix-терминале могут стать убийцей времени и как я с этим справляюсь. Немного автоматизации — и минус сотни нажатий в день..
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Расскажу, как развернуть MLflow с нуля и вытащить его наружу, если хочется следить за экспериментами не только локально. Подойдёт для пет-проектов и просто тренировки
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
__getattr__
в Python и зачем он нужен?__getattr__
— это магический метод, который вызывается, когда атрибут не найден обычным способом. Он позволяет управлять доступом к несуществующим атрибутам, создавать прокси-объекты, ленивую загрузку и динамические значения.class LazyUser:
def __init__(self, name):
self.name = name
def __getattr__(self, attr):
return f'Атрибута "{attr}" нет, но мы что-нибудь придумаем'
user = LazyUser('Анна')
print(user.name) # Анна
print(user.email) # Атрибута "email" нет, но мы что-нибудь придумаем
🗣️ В этом примере, если атрибут не найден (например, email), вызывается __getattr__, который возвращает кастомный ответ. Это может быть полезно для отладки, логирования, создания API-обёрток и сериализации
Please open Telegram to view this post
VIEW IN TELEGRAM
Поговорим, почему современный дата-сайентист обязан быть фулл-стеком: от сбора данных до деплоя модели и фронта. И как иначе не угробить проект на ровном месте
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
🌪 Используй правило «шторма идей» для архитектуры
Когда проектируешь систему, не останавливайся на первом решении. Оно почти всегда не лучшее.
👉 Совет: придумай минимум три разных способа решить задачу: через очереди, через события, через разные структуры данных. Потом выбери оптимальный. Даже если останешься при первом варианте — альтернативы покажут слабые места.
Когда проектируешь систему, не останавливайся на первом решении. Оно почти всегда не лучшее.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пробую научить Python создавать странные картины с помощью случайностей, математики и шума Перлина. Без нейросетей — только код, немного философии и много визуального абсурда
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
• Пишем Wake-on-LAN сервис на ESP8266 при помощи ChatGPT
• Необычные вкусы покупателей: что такое товарные пары и как их исследовать
• Kafka. Лучшие практики применения. Настройки Producer & Consumer
• Словари в Python: обзор и как пользоваться
• Хотите, покажу вам магию живого кода на p5py?
Please open Telegram to view this post
VIEW IN TELEGRAM
В статье показываю, какие архитектурные паттерны помогают правильно строить микросервисы: от миграции через API Gateway до Event Sourcing, с примерами кода и диаграммами
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM