Ghostly Python
8.28K subscribers
552 photos
24 videos
622 links
Погружаемся в мир Python: задачи, фишки, библиотеки и террабайты полезного материала.

Сотрудничество: @heywan_n1
менеджер: @shmyzna

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+IOa15XDNbxRkYzNi
Download Telegram
🖼️ Библиотека: glom

glom — декларативная библиотека для извлечения и трансформации вложенных структур данных (dict/list/tuple). Позволяет описывать «что достать и как преобразовать» короткой спецификацией вместо ручных циклов и if.

ℹ️ Основные возможности:

🟢 Доступ к глубоко вложенным полям без try/except
🟢 Маппинг и агрегирование списков одной строкой
🟢 Значения по умолчанию и безопасные обходы отсутствующих ключей
🟢 Композиция спецификаций для сложных преобразований


⚙️ Пример использования:

from glom import glom, T

data = {
"user": {"name": "Alice", "age": 30, "emails": ["a@x.io", "b@y.io"]},
"orders": [{"id": 1, "total": 99.9}, {"id": 2, "total": 15.0}]
}

spec = {
"username": T["user"]["name"],
"primary_email": T["user"]["emails"][0],
"order_ids": (T["orders"], [T["id"]]),
"sum_total": (T["orders"], sum, [T["total"]]), # суммируем totals
}

print(glom(data, spec))
# ➔ {'username': 'Alice', 'primary_email': 'a@x.io', 'order_ids': [1, 2], 'sum_total': 114.9}

# Безопасный доступ с дефолтом:
print(glom(data, "user.phone", default="no phone")) # ➔ 'no phone'


✔️ Установка:

pip install glom


➡️ Ссылка на документацию

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👩‍💻 Создание MCP‑серверов на FastMCP: 7 ошибок, которых стоит избегать

Автор в статье дает конкретные советы по исправлению каждой проблемы и предупреждает о реальных рисках безопасности (включая известные CVE).

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📱 Фишка: asyncio.Semaphore — контроль одновременных корутин

Semaphore ограничивает количество корутин, которые могут выполнять определённый блок кода одновременно. Полезно для защиты API от превышения лимитов или для ограничения нагрузки на базу данных.

import asyncio

class ApiClient:
def __init__(self, max_concurrent=3):
self._semaphore = asyncio.Semaphore(max_concurrent)

async def fetch(self, url):
async with self._semaphore:
print(f"Начало запроса к {url}")
await asyncio.sleep(1) # имитация сетевого вызова
print(f"Завершён: {url}")
return {"data": url}

async def main():
client = ApiClient(max_concurrent=2) # максимум 2 запроса одновременно

urls = ["/api/1", "/api/2", "/api/3", "/api/4"]
tasks = [client.fetch(url) for url in urls]
results = await asyncio.gather(*tasks)

print(f"Получено {len(results)} результатов")

asyncio.run(main())


📌 Как это работает?

— При входе в async with счётчик семафора уменьшается на 1.
— Если счётчик 0, корутина ждёт, пока кто-то не выйдет (счётчик не увеличится).
— При выходе из блока счётчик снова увеличивается.

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
«Вайб-кодинг» — слово года по версии словаря Collins

(на сленге - безработный 🙂)

🐍 Ghostly Python | #мем
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥51👍1😁1🤣1
🖼️ Библиотека tenacity — умные повторные попытки для ненадёжного кода

Tenacity — это библиотека, которая автоматически перезапускает функцию при ошибке. Идеально для работы с сетевыми запросами, API, базами данных — везде, где код может временно упасть, но потом отработать.

⚙️ Пример использования:

from tenacity import retry, stop_after_attempt
import requests

# Повторить 3 раза при любой ошибке
@retry(stop=stop_after_attempt(3))
def get_data():
return requests.get("https://api.example.com/data").json()

# Использование
data = get_data() # если упадёт — автоматически повторит до 3 раз


✔️ Установка:

pip install tenacity

🐍 Ghostly Python | #библиотеки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
👩‍💻 Автоматизация отдела продаж в Bitrix24

Автор статьи максимально рассказал об автоматизации продаж и квалифицировании лидов в битрикс.

➡️ Ссылка на статью

🐍 Ghostly Python | #статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
📱 Фишка: asyncio.TaskGroup — надёжное управление группами задач

TaskGroup автоматически следит за всеми запущенными в нём задачами. Если любая задача падает с ошибкой — отменяются все остальные, и вы точно ничего не пропустите. Удобнее и безопаснее, чем ручной gather/wait.

import asyncio

async def worker(name, delay):
print(f"Задача {name} стартует")
await asyncio.sleep(delay)
if name == "fail":
raise ValueError("Ошибка в задаче!")
print(f"Задача {name} завершена")
return f"Результат {name}"

async def main():
try:
async with asyncio.TaskGroup() as tg:
task1 = tg.create_task(worker("A", 1))
task2 = tg.create_task(worker("B", 2))
task3 = tg.create_task(worker("fail", 0.5))
task4 = tg.create_task(worker("C", 1.5))
# сюда мы попадём, только если все задачи успешны
print("Все задачи завершены без ошибок")
except Exception as e:
print(f"Перехвачено исключение: {e}")
# все незавершённые задачи уже отменены автоматически

asyncio.run(main())


📌 Как это работает?

— При входе в async with создаётся группа задач.
— Как только одна задача вызывает исключение — группа немедленно отменяет все остальные.
— После выхода из блока можно быть уверенным: либо все задачи выполнились успешно, либо ни одна «незакрытая» ошибка не осталась незамеченной.

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🔲 Захватывающая драма 21 века

На всякий случай:

yt-dlp --download-sections "*start_time-end_time"
<video_url>


🐍 Ghostly Python | #мем
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍42
📱 Фишка: collections.deque — двусторонняя очередь с быстрой вставкой и удалением

deque (двусторонняя очередь) из модуля collections — это более эффективная альтернатива спискам, когда часто требуется вставка или удаление с начала и конца.

from collections import deque

# Создаём deque
queue = deque(["Алиса", "Боб", "Чарли"])

# Добавляем в конец и в начало
queue.append("Дэвид")
queue.appendleft("Эва")
print(queue) # ➔ deque(['Эва', 'Алиса', 'Боб', 'Чарли', 'Дэвид'])

# Удаляем с конца и начала
queue.pop() # ➔ 'Дэвид'
queue.popleft() # ➔ 'Эва'
print(queue) # ➔ deque(['Алиса', 'Боб', 'Чарли'])


📌 Как это работает?

🟢 deque оптимизирован для операций .append(), .appendleft(), .pop() и .popleft() — все выполняются за O(1), в отличие от обычного списка.
🟢 Можно ограничить длину (maxlen=N) — полезно для реализации кольцевых буферов.

🐍 Ghostly Python | #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4

Страх.
Гнев.
Стыд.
Вина.
Тревога.
Апатия.
Уныние.
Изоляция.
Бессилие.

Контакт.
Тепло.
Чувство.
Живость.
Ясность.
Точность.
Присутствие.
Тишина.

Покой.

Если выбор сделан,
твоё место здесь:

мэверик

Входи осторожно.

Кислород
зашкаливает.
🤮8
Открыли регистрацию на E-CUP 2026 Students 🎓

В этом сезоне — только для студентов. Будет интересно тем, кто изучает ML / DS / big data / аналитику данных.

Сможете ускорить модель по поиску дубликатов на 20%? Получится создать классификатор для модерации товаров? Сумеете предсказать поведение покупателя?

Как минимум — попробуете и получите фидбэк от тех, кто делает это в Ozon Tech каждый день. Как максимум — разделите призовой фонд в 7 200 000 ₽ в торжественной атмосфере конференции E-CODE.

Нетривиальные задачи, нетворк с ведущими специалистами индустрии, кастомный мерч и шанс масштабно усилить портфолио — это про E-CUP 2026 Students.
Больше подробностей и регистрация ↩️
🔥32
💯 Одна из самых полезных библиотек Python - hybridmethod.

Hybridmethod — это легкий декоратор, который упрощает использование синхронных и асинхронных методов в одном классе.

Он позволяет объявлять метод, который может быть вызван как в обычном, так и в asyns-контексте, исключая дублирование кода.

Плюсы использования:

🔹Поддерживает Python 3.x (версия 1.0.1).

🔹Имеет минимум зависимостей.

🔹 Идеально подходит для проектов, где требуется единый API для синхронного и асинхронного кода.

🔗Ссылка

🐍 Ghostly Python | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥1
ТЗ: УПОРЯДОЧИВАНИЕ ХАОСА СИСТЕМ.

Входные данные: неизвестны.
Требования: отсутствуют.
Среда исполнения: нестабильна.


Начать проектирование?
YES / YES
🔥1