About Python [ru]
6.25K subscribers
318 photos
1.57K links
Все о Python: алгоритмы, паттерны проектирования, задачи, нейронные сети

Канал на бирже - https://telega.in/c/python_tesst

По вопросам рекламы или разработки: @g_abashkin
Download Telegram
👩‍💻 IMPulse — наш взгляд на менеджмент инцидентов

Статья представляет open source решение для менеджмента инцидентов, альтернативу Alertmanager. Рассматриваются его преимущества и возможности для компаний, ограниченных санкциями или политикой безопасности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧭 Документация — это не wiki, а навигатор

Многие пишут документацию, как хранилище фактов. Но пользователю нужно не «знать всё», а быстро дойти до цели.

👉 Совет: строй документацию как сценарий: «Ты хочешь Х — делай 1, 2, 3». Дальше — ссылки на детали. Делай её пошаговой и прагматичной. Хорошая дока экономит человеку не время, а жизнь.
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Python-библиотеки, которые упрощают жизнь программиста. Часть 1

Здравствуйте! Я — Алексей Жиряков, техлид backend-команды KION. Делюсь подборкой Python-библиотек, которые мы используем для оптимизации работы. Надеюсь, они будут полезны и вам!

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Когда уверенность становится самонадеянностью: история одной фатальной ошибки

Привет! Я — Денис, студент Ярославского университета и сотрудник Тензора. В статье расскажу, как мы с командой разработали кликер-игру и столкнулись с ошибками, но получили ценный опыт.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как и когда использовать Celery — мой опыт на проде

Рассказываю, как прикрутил Celery, чтобы фоновые запросы к AI-API не превращались в очередь в МФЦ. Плюсы, грабли и когда это вообще стоит делать.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Умная генерация коротких ссылок с контролем коллизий

Реализуйте функцию shorten_url(original_url, storage), которая генерирует короткий код (например, 5 символов) для длинной ссылки.

Функция должна гарантировать уникальность кода и использовать уже существующий storage (словарь вида {short_code: original_url}) для проверки коллизий.

Код должен быть:

• Состоящим из символов [a-zA-Z0-9]
• Фиксированной длины (по умолчанию 5)
• Уникальным: если сгенерированный код уже есть — нужно сгенерировать другой


Решение задачи🔽

import random
import string

def shorten_url(original_url, storage, code_length=5):
chars = string.ascii_letters + string.digits
attempt = 0
max_attempts = 1000

while attempt < max_attempts:
code = ''.join(random.choices(chars, k=code_length))
if code not in storage:
storage[code] = original_url
return code
attempt += 1

raise RuntimeError("Unable to generate unique code after many attempts")

# Пример использования
storage = {}
url = "
https://example.com/very/long/link"
code = shorten_url(url, storage)
print(code)
print(storage)
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 7 продвинутых приемов pandas для науки о данных

Статья делится 7 продвинутыми приёмами работы с pandas для оптимизации задач анализа данных. Рассматриваются, например, итерации по группам с df.groupby().iter() и другие способы упростить повторяющиеся операции.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Объединяем фреймы данных в pandas: две самые распространённые операции

Статья рассматривает автоматизацию объединения таблиц с биохимическими показателями крови, поступающих из разных клиник. Показано, как с помощью одной команды в pandas легко объединить данные, несмотря на различия в порядке столбцов.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Сборщик мусора CPython и его влияние на производительность приложения

Статья раскрывает механизмы управления памятью в CPython, уделяя особое внимание циклическому сборщику мусора (GC). Рассматриваются его работа, запуск и влияние на производительность приложений.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Мини-роутер с поддержкой path-параметров

Реализуйте класс MiniRouter, который позволяет регистрировать и вызывать обработчики HTTP-путей с динамическими параметрами. Поддерживаемые шаблоны маршрутов:

/users/:id — параметр id

/posts/:post_id/comments/:comment_id — вложенные параметры

Метод add_route(path_template, handler) регистрирует обработчик. Метод resolve(path) вызывает нужный обработчик и передаёт ему параметры в виде словаря.

Если путь не совпадает ни с одним шаблоном — выбрасывается ValueError.

Решение задачи🔽

class MiniRouter:
def __init__(self):
self.routes = []

def add_route(self, path_template, handler):
parts = path_template.strip('/').split('/')
self.routes.append((parts, handler))

def resolve(self, path):
path_parts = path.strip('/').split('/')

for route_parts, handler in self.routes:
if len(route_parts) != len(path_parts):
continue

params = {}
matched = True

for route_part, path_part in zip(route_parts, path_parts):
if route_part.startswith(':'):
params[route_part[1:]] = path_part
elif route_part != path_part:
matched = False
break

if matched:
return handler(params)

raise ValueError("No route matched")

# Пример использования:
router = MiniRouter()

def user_handler(params):
return f"User ID: {params['id']}"

def comment_handler(params):
return f"Post {params['post_id']}, Comment {params['comment_id']}"

router.add_route('/users/:id', user_handler)
router.add_route('/posts/:post_id/comments/:comment_id', comment_handler)

print(router.resolve('/users/42')) # ➜ User ID: 42
print(router.resolve('/posts/100/comments/55')) # ➜ Post 100, Comment 55
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
👩‍💻 Python REST API: Flask, Connexion и SQLAlchemy (часть 1)

Статья из серии посвящена созданию REST API на Flask. Рассматриваются настройка проекта, обработка запросов с Connexion, определение конечных точек через OpenAPI и аннотация API с помощью Swagger UI.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
👩‍💻 Доверяй, но проверяй: Как парсинг помогает выявить фейки в НСИ

Статья описывает Excel-файл с актуальной информацией о ГОСТах, обсуждает их применение и влияние данных. Рассматриваются подходы к парсингу и автоматизации с использованием C#, Python и VBA.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Дашбординг: Dash или Shiny

Разбираемся в устройстве Dash и Shiny и почему оба фреймворка отлично подходят для решения единственной задачи - создать функциональный и красивый дашборд.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Python REST API: Flask, Connexion и SQLAlchemy (часть 2)

Статья продолжает серию по созданию REST API на Flask. В этой части вы подключаете SQLite, используете SQLAlchemy для управления данными, добавляете сериализацию с Marshmallow и интегрируете базу данных с REST API.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧠 Сложность задачи = (техническая сложность) × (неясность цели)

Ты думаешь, что задача тяжёлая. Но, возможно, ты просто не до конца понял, что именно нужно сделать.

👉 Совет: перед стартом задай себе вопрос: «Что должно быть в итоге, в чём успех?» Если нет чёткого критерия, сложность будет только расти. Уточнение цели снижает объём неопределённости в разы.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Введение в ERP: Что такое ERP-системы и почему они важны для производства?

В статье рассматриваются ERP-системы: их роль в управлении бизнесом, ключевые преимущества внедрения, а также этапы выбора, проектирования и настройки, чтобы сделать систему максимально эффективной.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Фильтрация списка словарей

Напишите функцию, которая принимает список словарей и фильтрует его, возвращая только те словари, в которых значение указанного ключа превышает заданное значение.

Пример:

data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 20},
{"name": "Diana", "age": 35}
]

result = filter_by_key(data, "age", 25)
print(result)
# Ожидаемый результат:
# [
# {"name": "Bob", "age": 30},
# {"name": "Diana", "age": 35}
# ]


Решение задачи🔽

def filter_by_key(data, key, threshold):
return [item for item in data if item.get(key, 0) > threshold]

# Пример использования:
data = [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30},
{"name": "Charlie", "age": 20},
{"name": "Diana", "age": 35}
]

result = filter_by_key(data, "age", 25)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
4
👩‍💻 Как я создал Telegram-бота для хранения файлов и чуть не стал библиотекарем

Узнайте, как я превратил свой Telegram в персональную файловую систему с помощью бота на Python. В статье делюсь опытом разработки, полным кодом и лайфхаками.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
👩‍💻 Django + Zoho CRM: как управлять данными без головной боли

Статья рассказывает о процессе интеграции Django с Zoho CRM. Рассматриваются шаги настройки: подготовка среды, работа с вебхуками и реализация асинхронной обработки данных через Celery для повышения эффективности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
1