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

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

По вопросам рекламы или разработки: @g_abashkin
Download Telegram
👩‍💻 AJAX-запросы в Django на примере простейшего приложения сбора и показа сообщений

Статья предлагает простой мануал по использованию AJAX для динамического обновления страниц. Рассматривается взаимодействие фронтенда с AJAX и бэкенда на Django, с акцентом на минимализм кода для новичков.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Поиск пересечения двух списков

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

Пример:

list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]

result = find_intersection(list1, list2)
print(result)
# Ожидаемый результат: [3, 4, 5]


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

def find_intersection(list1, list2):
set2 = set(list2)
return [item for item in list1 if item in set2]

# Пример использования:
list1 = [1, 2, 3, 4, 5]
list2 = [3, 4, 5, 6, 7]

result = find_intersection(list1, list2)
print(result)
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Самая наглядная и простая модель естественного отбора: птицы со всего одним геном. Важность разнообразия у потомков

Статья представляет простейшую модель естественного отбора с одним параметром-гена. Рассматриваются принципы её работы, интерактивные примеры кода на Python с использованием p5py, и визуализации в формате гифок.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Создание блога на FastAPI с нуля: JWT, Markdown и современный веб-дизайн

В этой статье мы создадим полноценный мини-блог на FastAPI с нуля, используя современные технологии веб-разработки. Вы узнаете, как реализовать JWT-аутентификацию, работать с Markdown и создать привлекательный пользовательский интерфейс.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Как написать Raft на чистом Python: основы

Статья объясняет основы реализации алгоритма Raft на Python. Рассматриваются механизмы выбора лидера, репликации данных и обеспечения согласованности для стабильной работы распределённых систем.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
➡️ Оптимизация ядра WebGPU для перемножения матриц и достижения производительности свыше 1ТФЛОПС

Статья рассказывает о создании Surfgrad — высокопроизводительной библиотеки для автоматического дифференцирования выражений с использованием WebGPU. Описываются тензорные операции и оптимизация под браузеры.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
3
👩‍💻 no-code (hub.ultralytics.com) в связке с Yandex DataSphere

Статья рассматривает no-code и low-code платформы для обучения нейросетей. Особое внимание уделяется платформе Ultralytics Hub, её возможностям обучения Yolo-моделей и использованию ресурсов Yandex DataSphere.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Получение информации о системе с помощью Python

Статья показывает, как системные администраторы могут использовать Python для быстрого получения информации о системе. Рассматриваются примеры скриптов для мониторинга производительности и отчетности.

Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👩‍💻 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