Python вопросы с собеседований
25.6K subscribers
638 photos
71 videos
17 files
520 links
Вопросы с собеседований по Python

@workakkk - админ

@machinelearning_interview - вопросы с собесдований по Ml

@pro_python_code - Python

@data_analysis_ml - анализ данных на Python

@itchannels_telegram - 🔥 главное в ит

РКН: clck.ru/3FmrFd
Download Telegram
🖥 FastAPI для клиента: как должны выглядеть API-клиенты в Python

Python-сообщество отлично научилось делать API-серверы.
FastAPI / DRF дают идеальный опыт разработчика:
- типы
- валидация
- понятные эндпоинты
- документация по OpenAPI
- минимум рутины

Но есть проблема.

Серверы стали удобными и “правильными”, а вот клиентская сторона до сих пор часто выглядит как кустарщина.

Что часто встречается в проектах на базе python:
- везде раскиданы httpx.get/post
- URL собираются руками
- параметры и headers копируются по коду
- ответы парсятся вручную
- ошибки обрабатываются как попало
- нет нормальных типов и автодополнения

И именно тут часто появляется 80% проблем.
API может быть идеально спроектирован, но пользоваться им неудобно.

Да, можно сгенерировать кода клиента.
Но чаще всего генератор выдаёт огромный неудобный код:
- странные имена методов
- перегруженные классы
- нечитаемый boilerplate
- всё равно приходится писать обёртки руками

В итоге клиенты либо не генерируют вообще, либо генерируют и потом ненавидят.

API-клиенты должны быть сделаны как фреймворк.
Как FastAPI, только наоборот.


То есть ты описываешь клиент красиво и декларативно:
- функция описывает intent (что мы делаем)
- типы описывают контракт
- библиотека берёт на себя HTTP-рутину

Вместо кода “на коленке”
httpx.get("https://api.site.com/users/123")

Должно быть
get_user(123)

И дальше библиотека сама:
- соберёт URL
- подставит параметры
- сериализует запрос
- выполнит HTTP
- распарсит ответ
- кинет нормальную ошибку
- даст типы и автодополнение в IDE

Именно эту идею автор статье и продвигает (проект Clientele)
Сделать API-клиенты удобными, чистыми и типобезопасными
так же, как мы привыкли делать серверы

Проблема не в HTTP.
Проблема в том, что API-клиенты в Python до сих пор не стали “первоклассным кодом”.

А должны стать.

Подробности: paulwrites.software/articles/python-api-clients
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍2🔥1
Python : подробный путеводитель с примерами кода 2026 года

Этот материал предназначен для новичков и тех, кто хочет систематизировать знания по языку программирования Python.

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

📌 Подробнее
4👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 NovaSR - крошечная open-source модель, которая ускоряет обработку аудио в сотни раз

Вышел релиз NovaSR - маленькая, но очень мощная модель для улучшения качества аудио.

Самый громкий факт:
⚡️ 3600 секунд аудио за 1 секунду
То есть целый час звука обрабатывается практически мгновенно - на порядки быстрее прошлых решений.

Зачем это нужно
NovaSR полезна везде, где есть “сырой” звук:

улучшение TTS-озвучки (делает голос чище и приятнее)
улучшение качества датасетов (для обучения ASR/TTS/voice моделей)
очистка и восстановление созвонов / звонков / записей
быстрый preprocessing перед ML пайплайном

Это как “апскейлер” для звука:
меньше шумов, больше чёткости, лучше разборчивость.

Ссылки:
Repo: https://github.com/ysharma3501/NovaSR
Model: https://huggingface.co/YatharthS/NovaSR

Если работаешь с TTS / ASR / аудио-датасетами - это must-have тулза.
7👍4🔥4
🖥 Парсинг на Python - от DOM до асинхронщины. Стань Гуру Парсинга.

Один из лучших курсов по Парсинг на Stepik со скидкой 48%

Освой Python-парсинг так, как это делают в реальных проектах.
Не учебные “игрушки”, а рабочие инструменты для сбора данных с сайтов, API и динамических сервисов.

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

В итоге ты сможешь не просто “писать на Python”, а решать практические задачи: анализ данных, мониторинг, автоматизация, фриланс-заказы и собственные проекты.

Сегодня можно забрать курс со скидкой 48%: https://stepik.org/a/269942/
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥2
🧠 Microsoft: как люди используют ИИ - сильно зависит от контекста

Microsoft проанализировали 37.5 млн+ диалогов с Copilot и увидели простую, но важную закономерность:

💻 Днём и с компьютера (рабочие часы)
люди чаще спрашивают про:
- продуктивность
- работу и карьеру
- задачи “по делу”

📱 С телефона и поздно ночью
запросы уходят в другое:
- здоровье
- игры
- философия
- личные советы и размышления

Интересно, что со временем Copilot уходит от чисто рабочих сценариев: всё больше запросов становится “повседневными”.
Это намекает на тренд: ИИ постепенно превращается не только в инструмент для работы, а в постоянного помощника по жизни.

⚡️ Полное исслежование: https://www.deeplearning.ai/the-batch/microsoft-study-shows-people-use-ai-very-differently-at-different-times-or-on-different-devices/
6🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ Сравнение производительности Python и ручного подхода

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


import time
# Ручной подход
def manual_sum(n):
total = 0
for i in range(1, n + 1):
total += i
return total
# Питон-метод
def python_sum(n):
return sum(range(1, n + 1))
# Сравнение производительности
n = 1000000
start_time = time.time()
manual_result = manual_sum(n)
manual_time = time.time() - start_time
start_time = time.time()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Forwarded from Machinelearning
🌟 PaddleOCR-VL-1.5: компактная модель для сложного парсинга.

PaddlePaddle обновили свою линейку PaddleOCR-VL, выпустив PaddleOCR-VL-1.5 - компактную VLM на 0.9 млрд. параметров на базе ERNIE-4.5-0.3B-Paddle. Несмотря на скромный размер, в задачах разбора документов она показывает SOTA-результаты.

На тесте OmniDocBench v1.5 модель выбила 94.5% точности, обойдя не только прошлую версию, но и более тяжелых конкурентов.

Фишка обновления - упор на полевые условия. Модель специально учили работать с плохими исходниками: кривыми сканами, бликами от мониторов и мятыми страницами.

Попутно сделали бенчмарк Real5-OmniDocBench, который гоняет модели по 5 сценариям: сканирование, перекосы, деформация листа, фото с экрана и плохое освещение.

🟡В 1.5 добавили:

🟢Text spotting: находит и распознает текст одновременно (печатный русский - неплохо, рукописный - почти никак)

🟢Seal recognition: распознает печати (русские - не очень, китайские - на ура).

🟢Cross-page table merging: умеет склеивать таблицы, которые разорваны между страницами.

🟢Работа с заголовками: не теряет структуру параграфа при переходе на новый лист.

🟢Новые языки: добавили поддержку тибетского и бенгальского, подтянули распознавание редких символов и древних текстов.

🟡Деплой - на любой вкус

Модель работает с transformers, дружит с Flash Attention 2 и, само собой, поддерживается PaddlePaddle 3.2.1.

Если нужно быстро поднять сервис - есть готовый Docker-образ.

🟡Пара важных моментов по использованию

Если нужен полноценный постраничный парсинг всего документа, лучше использовать официальный пакет PaddleOCR. Реализация через transformers пока ограничена только распознаванием отдельных элементов и споттингом.


В пайплайн встроили логику препроцессинга. Если картинка меньше 1500 пикселей, она автоматом апскейлится фильтром Lanczos. При этом есть потолок в 1.6 млн. пикселей для споттинга, это чтобы не перегружать память GPU и сохранить читаемость мелкого шрифта.



📌Лицензирование: Apache 2.0 License.


🟡Модель
🟡Arxiv
🟡Demo
🟡DeepWiki
🖥Github


@ai_machinelearning_big_data

#AI #ML #VL #OCR #PaddleOCR
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1🔥1
🧠 Python-задача с собеседования: найди ошибку

Код должен посчитать количество чисел больше среднего значения в списке.


def count_above_avg(nums, avg=sum(nums)/len(nums)):
count = 0
for n in nums:
if n > avg:
count += 1
return count

data1 = [1, 2, 3, 4, 5]
data2 = [10, 20, 30]

print(count_above_avg(data1))
print(count_above_avg(data2))


Проблема в этой строке:

```python
def count_above_avg(nums, avg=sum(nums)/len(nums)):
```
Здесь используется значение по умолчанию, которое вычисляется один раз — в момент определения функции, а не при каждом её вызове.

Что происходит по шагам:

Когда Python читает определение функции, он сразу считает:

sum(nums)/len(nums)
Но nums в этот момент - это первый переданный список, то есть data1.

Значение avg фиксируется и больше не меняется.

При вызове:

• count_above_avg(data2)
• среднее значение не пересчитывается, используется старое — от data1.

Поэтому логика ломается, функция работает с неверным средним.

📌 Это известная ловушка Python
Значения аргументов по умолчанию вычисляются один раз.
Это та же причина, почему списки и словари в дефолтных параметрах часто приводят к багам.

🛠 Правильное решение
Нужно вычислять среднее внутри функции, а не в параметрах:

```python
def count_above_avg(nums, avg=None):
if avg is None:
avg = sum(nums) / len(nums)
return sum(1 for n in nums if n > avg)
```

Теперь среднее будет считаться заново при каждом вызове.

💡 Главное правило
Никогда не используй вычисляемые или изменяемые объекты как значения по умолчанию:

def f(x, lst=[])
def f(x, avg=sum(x)/len(x))

Используй None и считай внутри функции.
👍128👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Экономичный способ развернуть DeepSeek локально запускай модель через Ollama.

Так ты получаешь мощную LLM на своём ПК без облака и без огромных требований к железу.

Что важно:

- выбирай DeepSeek Distill 7B/8B или 14B
- формат GGUF + квантизация Q4 (лучший баланс)
- поднимаешь как локальный API и дергаешь из Python, бота или агента

Плюс:

- приватность - всё работает локально
- дешево - не нужен сервер
- можно быстро менять модель, не трогая код


# 1) Установи Ollama (macOS/Linux/Windows)
# https://ollama.com

# 2) Запусти экономичную DeepSeek модель
ollama pull deepseek-r1:8b
ollama run deepseek-r1:8b

# 3) Проверка: запрос к локальному API
curl http://localhost:11434/api/generate \
-d '{"model":"deepseek-r1:8b","prompt":"Explain transformers simply","stream":false}'

# 4) Использование из Python
python - << 'PY'
import requests

r = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "deepseek-r1:8b",
"prompt": "Сделай краткий план изучения SQL за 7 дней",
"stream": False
},
timeout=120
)

print(r.json()["response"])
PY



https://www.youtube.com/shorts/zjn2pXrGbXI
6👍2🔥2😁2
🧊 pyPFC - Python-библиотека для Phase Field Crystal (PFC) симуляций

Если ты занимаешься моделированием материалов, кристаллов или фазовых переходов - сохрани.
pyPFC позволяет запускать PFC-симуляции быстро и удобно прямо на Python.

Что такое Phase Field Crystal (PFC)?
PFC (Phase Field Crystal) - это метод моделирования, который описывает материал как непрерывное поле плотности.

Проще:
- вместо того чтобы симулировать каждый атом отдельно (как в molecular dynamics)
- PFC моделирует “узор кристаллической решётки” как волну/поле

За счёт этого PFC может моделировать процессы на более длинных временных масштабах, чем классические атомарные симуляции.

PFC используют, чтобы изучать:
- рост кристаллов и формирование структуры
- дефекты решётки (дислокации)
- зернистость и границы зёрен
- фазовые переходы и самоорганизацию
- поведение материалов при охлаждении/нагреве

Что даёт pyPFC:
ускорение на GPU через PyTorch (можно гонять и на CPU, и на RTX)
🧪 готовые 3D-симуляции, примеры, эксперименты
🧩 удобно для исследований и обучения
📦 open-source проект + нормальная инженерная структура

GitHub:
https://github.com/HHallb/pyPFC
3
🖥 Лучшие практики написания кода на Python (2026)

При разработке на Python следует руководствоваться философией The Zen of Python (PEP 20) – набором принципов, подчеркивающих важность простоты и ясности кода.

Например, “Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex.” («Красивое лучше, чем некрасивое. Явное лучше неявного. Простое лучше сложного.»).

Один из ключевых афоризмов Zen of Python гласит: “Readability counts.” («Читаемость кода имеет значение»), и действительно, код читается гораздо чаще, чем пишется. Поэтому чистый код – это код, который легко читать и поддерживать.

Мы собрали современные рекомендации по стилю кода в этой статье: https://uproger.com/luchshie-praktiki-napisaniya-koda-na-python-2026-2/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Используй `pdb` вместо print для надежной отладки!

Использование оператора `print` для отладки может привести к недоразумениям и пропущенным ошибкам, поскольку он не позволяет видеть контекст выполнения программы. Вместо этого используйте встроенные инструменты для отладки, такие как `pdb`, которые дают возможность устанавливать точки остановки, отслеживать выполнение и исследовать состояние переменных в реальном времени.

Подписывайся, больше фишек каждый день !

import pdb
def calculate_factorial(n):
if n < 0:
raise ValueError("Negative values are not allowed")
elif n == 0:
return 1
else:
return n * calculate_factorial(n - 1)
def main():
num = 5
pdb.set_trace() # Запускаем отладчик здесь
result = calculate_factorial(num)
print(f"Factorial of {num} is {result}")
if __name__ == "__main__":
main()

t.me/ai_machinelearning_big_data - наш телеграм канал с уроками
2👍2🔥1
🧩 Минималистичный код для Claude

Nanocode — это компактная альтернатива Claude Code, реализованная в одном файле на Python без зависимостей. Он включает полный агентный цикл с использованием инструментов для работы с файлами и ведения истории беседы.

🚀Основные моменты:
- Полный агентный цикл с использованием инструментов
- Инструменты: read, write, edit, glob, grep, bash
- Ведение истории беседы
- Цветной вывод в терминале

📌 GitHub: https://github.com/1rgs/nanocode

#python
3👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 КАК РАБОТАЕТ ВНИМАНИЕ (ATTENTION) В ТРАНСФОРМЕРАХ

Механизм внимания - это способ для модели “смотреть” на разные слова в тексте и решать, какие из них сейчас важнее.

Представь фразу: “Я положил ключи на стол, потому что он был рядом”.
Слово “он” должно ссылаться на “стол”, а не на “ключи”.
Внимание делает ровно это - для каждого слова вычисляет, на какие другие слова нужно опираться сильнее.

Как это работает в одном абзаце:

Для каждого токена модель строит три вектора - Query (что я ищу), Key (что я из себя представляю), Value (какую информацию несу).

Считается “похожесть” Query к каждому Key - это оценки важности.

Оценки нормализуются (softmax), чтобы получились веса от 0 до 1.

Итоговое представление токена - это взвешенная сумма Value по всем токенам.
То есть модель смешивает информацию из контекста, но делает это умно - больше веса тем словам, которые сейчас важны.

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


import numpy as np

def softmax(x: np.ndarray) -> np.ndarray:
x = x - np.max(x) # стабилизация
e = np.exp(x)
return e / np.sum(e)

# Допустим, у нас 3 токена в контексте.
# Для простоты возьмём маленькую размерность векторов (d=2).
# Query - "что я ищу"
# Key - "что я такое"
# Value - "какую инфу несу"

Q = np.array([1.0, 0.5]) # Query для текущего токена (например, слово "он")

K = np.array([
[1.0, 0.0], # Key токена 1 (например, "ключи")
[0.9, 0.1], # Key токена 2 (например, "стол")
[0.0, 1.0], # Key токена 3 (например, "рядом")
])

V = np.array([
[10.0, 0.0], # Value токена 1
[0.0, 10.0], # Value токена 2
[5.0, 5.0], # Value токена 3
])

# 1) Считаем "похожесть" Q на каждый K через скалярное произведение
scores = K @ Q # shape: (3,)
print("scores:", scores)

# 2) Нормализуем оценки -> получаем веса внимания
weights = softmax(scores)
print("attention weights:", weights)

# 3) Итоговый вектор = взвешенная сумма Value
output = weights @ V # shape: (2,)
print("output (context mixed):", output)

# Интерпретация:
# Если вес токена 2 ("стол") самый большой, значит модель "смотрит" на него сильнее всего.
5🙏3👍1🔥1
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇

🖥 ИИ: t.me/ai_machinelearning_big_data

🖥 Python: t.me/pythonl

🖥 Linux: t.me/linuxacademiya

🖥 C++ t.me/cpluspluc

🖥 Docker: t.me/DevopsDocker

🖥 Хакинг: t.me/linuxkalii

🖥 Devops: t.me/DevOPSitsec

👣 Golang: t.me/Golang_google

🖥 Аналитика: t.me/data_analysis_ml

🖥 Javascript: t.me/javascriptv

🖥 C#: t.me/csharp_ci

🖥 Java: t.me/javatg

🖥 Базы данных: t.me/sqlhub

👣 Rust: t.me/rust_code

🤖 Технологии: t.me/vistehno

💰 Экономика и инвестиции в ИИ t.me/financeStable

💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi

🖥 Chatgpt бот в тг: t.me/Chatgpturbobot

📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy

🖥Подборка по Golang: https://t.me/addlist/MUtJEeJSxeY2YTFi

⚡️ Лучшие ИИ ресурсы: https://t.me/addlist/2Ls-snqEeytkMDgy

Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Самая крутая фича Python 3.14 - `sys.remote_exec()` (объясняю по-человечески)

Идея простая:
у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s)
оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши)
но тебе нужно посмотреть “что внутри” или поставить дебаггер

Раньше ты делал так:
- добавлял debugpy в код
- перезапускал приложение
- заново воспроизводил баг

Python 3.14 даёт новый чит-код:

sys.remote_exec() позволяет выполнить кусок Python-кода ВНУТРИ уже работающего Python-процесса.
То есть буквально “вколоть” скрипт в живой процесс.

Это как:
🔹 зайти внутрь процесса
🔹 выполнить print(), импорт, запись переменных
🔹 или даже подключить дебаггер
без рестарта вообще.


Пример: что можно сделать через sys.remote_exec()

Допустим у нас есть работающий процесс Python.

1) Мы хотим “добавить” туда код:
- вывести PID
- посмотреть глобальные переменные
- записать лог
- даже поменять значение переменной


# Этот код выполняется СНАРУЖИ и запускает инжект внутрь процесса
import sys

target_pid = 12345 # PID запущенного Python процесса

payload = r"""
import os
import time

print(" Injected into running process!")
print("PID:", os.getpid())
print("Time:", time.time())

# Пример: читаем что есть в глобальном пространстве
g = globals()
print("Globals keys sample:", list(g.keys())[:10])

# Пример: создаём переменную прямо в процессе
INJECTED_FLAG = True
"""

# Новое API Python 3.14
sys.remote_exec(target_pid, payload)



Пример 2: инжектим debugpy (дебаг без рестарта)


Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.


import sys

target_pid = 12345 # PID работающего uvicorn / fastapi процесса

payload = r"""
import debugpy

HOST = "0.0.0.0"
PORT = 5679

debugpy.listen((HOST, PORT))
print(f"🐞 debugpy is listening on {HOST}:{PORT}")

# если хочешь остановить выполнение и ждать пока подключишь IDE:
# debugpy.wait_for_client()
# print(" debugger attached!")
"""

sys.remote_exec(target_pid, payload)


Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно


Что важно

1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.

2) Это опасно для продакшена.
Требует прав уровня SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов.

3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел

https://www.youtube.com/watch?v=bYPFktmui4c
🔥65👍2