Каталог каналов Новое Каналы в закладках Мои каналы Поиск постов Рекламные посты
Инструменты
Мониторинг Новое Детальная статистика Анализ аудитории Telegraph-статьи Бот аналитики
Полезная информация
Инструкция Telemetr Документация к API Чат Telemetr
Полезные сервисы
Защита от накрутки Создать своего бота Продать/Купить канал Монетизация

Не попадитесь на накрученные каналы! Узнайте, не накручивает ли канал просмотры или подписчиков Проверить канал на накрутку
Прикрепить Телеграм-аккаунт Прикрепить Телеграм-аккаунт

Телеграм канал «Постоянный репозиторий по Python»

Постоянный репозиторий по Python
189
0
1
0
383
Подписчики
Всего
1 857
Сегодня
-5
Просмотров на пост
Всего
342
ER
Общий
17.92%
Суточный
10.1%
Динамика публикаций
Telemetr - сервис глубокой аналитики
телеграм-каналов
Получите подробную информацию о каждом канале
Отберите самые эффективные каналы для
рекламных размещений, по приросту подписчиков,
ER, количеству просмотров на пост и другим метрикам
Анализируйте рекламные посты
и креативы
Узнайте какие посты лучше сработали,
а какие хуже, даже если их давно удалили
Оценивайте эффективность тематики и контента
Узнайте, какую тематику лучше не рекламировать
на канале, а какая зайдет на ура
Попробовать бесплатно
Показано 7 из 189 постов
Смотреть все посты
Пост от 04.12.2025 12:43
153
0
0
Почему типизация стала обязательной в современном Python За последние годы Python резко «повзрослел». Раньше он ассоциировался с автоматизацией и простыми скриптами, а сегодня на нём строят высоконагруженные сервисы, ML-платформы, инструменты вокруг LLM и сложные API. В такой среде код без аннотаций начинает буквально мешать разработке. Поэтому типизация стала не трендом, а нормой для серьёзных Python-проектов. 🔹 Пример 1. Типы — это простая и эффективная коммуникация в команде def load_user(id: int) -> User | None: ... Уже по одной сигнатуре понятно: — принимается int, — возвращается объект User или None, — значит, вызывающей стороне нужно обработать отсутствие результата. Не нужно читать документацию, не нужно смотреть реализацию – всё видно на уровне интерфейса. 🔹 Пример 2. Типизация ловит ошибки ещё до запуска def send_email(address: str) -> None: ... send_email(123) # pyright/mypy скажут об ошибке сразу До запуска тестов, до CI, до продакшена – ошибка будет найдена в IDE. 🔹 Пример 3. Большие проекты без типов разваливаются при рефакторинге def create_order(data): ... Если data – «чёрный ящик», любое изменение внутри функций, которые его потребляют, превращается в минное поле. Но стоит добавить типизации – и проблема исчезает: class OrderPayload(TypedDict): id: int items: list[str] def create_order(data: OrderPayload) -> Order: ... Типизация делает проект устойчивым и поддерживаемым. ➡️ В следующем посте перейдём к основам чек-листа: современная конфигурация проекта (следите за обновлениями и поддержите канал через boost)
1
🔥 1
🥰 1
Пост от 27.11.2025 13:04
329
0
0
Пост от 27.11.2025 13:04
328
0
0
Пост от 26.11.2025 10:20
370
0
7
Как правильно логировать в Python без боли Большинство разработчиков начинают с print(), но уже через пару недель проект превращается в лотерею: что где выводится, почему нет таймстампов, где искать ошибки? Python даёт готовый, простой и мощный инструмент – logging, и в 80% задач достаточно всего трёх строк. Минимальная настройка, которая работает везде import logging logging.basicConfig( level=logging.INFO, format="%(asctime)s | %(levelname)s | %(name)s | %(message)s" ) log = logging.getLogger(__name__) Что дают эти три строки? level=logging.INFO Выводим всё, что реально важно: INFO, WARNING, ERROR. Если нужно больше деталей – смените на DEBUG. format=... Очень удобный формат: - время – для поиска проблем - уровень – для фильтрации - имя модуля – понимаем, откуда пришло сообщение - текст – собственно лог Такой формат хорошо читается в терминале, логах контейнеров, лог-агрегаторах. getLogger(__name__) Каждый файл получает свой логгер. В больших проектах это буквально спасает ориентацию в логах. Как использовать log.info("Сервис запущен") log.debug("Количество подключений: %s", count) log.warning("Медленный запрос: %s", request_time) log.error("Ошибка подключения к БД") Фишка: не используйте f-строки. logging подставляет параметры лениво, не тратя время, если лог не будет выведен. Почему это закрывает 80% задач? - Работает из коробки без внешних зависимостей. - Подходит для CLI-скриптов, API, микросервисов, ML-пайплайнов. - Хорошо дружит с Docker – логи идут в stdout. - Может быть расширено позже: - вывод в файл - ротация логов (RotatingFileHandler) - JSON-логи (logging.Formatter) - интеграция с Sentry / ELK / Grafana Loki - цветной вывод в терминале Но начало всегда одно – простая, чистая конфигурация, которую можно скопировать и забыть.
👍 4
🔥 2
🤝 2
1
Пост от 20.11.2025 12:04
432
0
0
👍 2
1
🔥 1
🥰 1
👏 1
Пост от 20.11.2025 12:04
395
0
0
Пост от 18.11.2025 12:46
350
0
1
Генетические алгоритмы представляют собой эволюционный метод оптимизации, вдохновлённый принципами естественного отбора. В этом подходе возможные решения задачи рассматриваются как особи в популяции, каждая из которых обладает определёнными характеристиками. Качество решения определяется функцией приспособленности, и чем выше это значение, тем больше вероятность, что данная особь будет выбрана для генерации следующего поколения. В процессе эволюции происходит отбор лучших индивидов, их скрещивание для получения новых комбинаций признаков и случайные мутации, обеспечивающие разнообразие. Со временем популяция всё лучше адаптируется к задаче, постепенно улучшая качество решений. Чтобы продемонстрировать минимальную структуру генетического алгоритма в DEAP, обычно используют классическую тестовую задачу OneMax. Её суть заключается в поиске бинарной строки максимальной приспособленности, где приспособленность определяется простой суммой единиц. Индивид представляет собой список из нулей и единичных значений фиксированной длины, а целью алгоритма является получение строки, состоящей из одних единиц. Благодаря простоте этой задачи можно сосредоточиться на механике работы генетического алгоритма: создании популяции, определении функции фитнеса, выборе операторов селекции, скрещивания и мутации. Это делает OneMax удобным примером для минимального рабочего кода. import random from deap import base, creator, tools, algorithms # Определяем типы creator.create("FitnessMax", base.Fitness, weights=(1.0,)) creator.create("Individual", list, fitness=creator.FitnessMax) toolbox = base.Toolbox() # Ген битов toolbox.register("attr_bool", random.randint, 0, 1) # Индивид и популяция toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, 20) toolbox.register("population", tools.initRepeat, list, toolbox.individual) # Фитнес-функция def eval_one_max(individual): return (sum(individual),) toolbox.register("evaluate", eval_one_max) # Операторы ГА toolbox.register("mate", tools.cxTwoPoint) toolbox.register("mutate", tools.mutFlipBit, indpb=0.05) toolbox.register("select", tools.selTournament, tournsize=3) def main(): random.seed(42) pop = toolbox.population(n=50) # Начальная оценка fitnesses = list(map(toolbox.evaluate, pop)) for ind, fit in zip(pop, fitnesses): ind.fitness.values = fit for gen in range(20): offspring = toolbox.select(pop, len(pop)) offspring = list(map(toolbox.clone, offspring)) # Cкрещивание for c1, c2 in zip(offspring[::2], offspring[1::2]): if random.random() < 0.5: toolbox.mate(c1, c2) del c1.fitness.values del c2.fitness.values # Мутации for mutant in offspring: if random.random() < 0.2: toolbox.mutate(mutant) del mutant.fitness.values # Переоценка изменённых индивидов invalid = [ind for ind in offspring if not ind.fitness.valid] fits = map(toolbox.evaluate, invalid) for ind, fit in zip(invalid, fits): ind.fitness.values = fit pop[:] = offspring best = tools.selBest(pop, 1)[0] print(f"Поколение {gen}: фитнес = {best.fitness.values[0]}") print("\nЛучший найденный индивид:", best) print("Сумма единиц:", sum(best)) if __name__ == "__main__": main() В итоге задача OneMax служит простым, но показательно эффективным примером применения генетических алгоритмов в DEAP. Она позволяет без лишних деталей понять структуру эволюционного поиска и увидеть, как популяция шаг за шагом улучшает решения за счёт отбора, скрещивания и мутаций. Отработав данный минимальный пример, становится проще переходить к более сложным задачам оптимизации, где фитнес-функция учитывает реальные параметры и имеет куда более сложную структуру.
3
👍 2
🔥 1
🥰 1
Смотреть все посты