ru
Feedback
Python вопросы с собеседований

Python вопросы с собеседований

Открыть в Telegram

Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Больше

📈 Аналитический обзор Telegram-канала Python вопросы с собеседований

Канал Python вопросы с собеседований (@python_job_interview) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 24 973 подписчиков, занимая 5 489 место в категории Технологии и приложения и 26 805 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 24 973 подписчиков.

Согласно последним данным от 04 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -145, а за последние 24 часа — -13, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 6.29%. В первые 24 часа после публикации контент обычно набирает 3.00% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 1 570 просмотров. В течение первых суток публикация набирает 750 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 8.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как github, api, собеседование, git, docker.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd

Благодаря высокой частоте обновлений (последние данные получены 05 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

24 973
Подписчики
-1324 часа
-357 дней
-14530 день
Архив постов
⚡️ Как находить утечки памяти в Python с помощью tracemalloc Сохрани себе: для обнаружения утечек памяти в Python используй модуль tracemalloc. Этот инструмент поможет тебе быстро отследить, где происходит выделение памяти, и выявить проблемные участки кода.

import tracemalloc
def memory_leak():
    a = []
    for i in range(10000):
        a.append('leak' * 100)
tracemalloc.start()
memory_leak()
snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')
print("[Top 10 memory allocations]")
for stat in top_stats[:10]:
    print(stat)

🖥 Большинство “парсеров” умирают через 2 дня. Ты научишься делать те, которые живут в проде. Это не про BeautifulSoup ради г
🖥 Большинство “парсеров” умирают через 2 дня. Ты научишься делать те, которые живут в проде. Это не про BeautifulSoup ради галочки. Это про системы сбора данных, которые: • не падают от мелких правок на сайте • собирают данные в разы быстрее • обновляют всё сами по расписанию • обходят ограничения и баны • выглядят как сервис, а не хаос из файлов Ты начнёшь видеть сайты не как страницы, а как источники данных, к которым можно подключиться. В итоге ты сможешь: • забирать данные для своих проектов • автоматизировать чужую рутину • делать инструменты для аналитики • брать коммерческие заказы на сбор данных Это навык, который напрямую превращается в деньги. Не “знаю Python”, а умею добывать данные из интернета профессионально. 🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/269942/

🖥 Python: Ты неправильно читаешь файлы Ты неправильно читаешь файлы в Python, если открываешь их без контекстного менеджера и сразу грузишь всё в память. Контекстный менеджер with гарантирует, что файл закроется даже при ошибке - без утечек дескрипторов и странных багов в проде. Читать весь файл через .read() удобно, но на больших логах и выгрузках ты просто съедаешь память. Правильнее - идти построчно: это быстро, экономно и идеально для обработки потоков данных. Буферизация тоже важна: можно явно задать buffering, чтобы ускорить чтение на медленных дисках или сетевых FS.

from pathlib import Path

path = Path("app.log")

with path.open("r", encoding="utf-8", buffering=1024 * 1024) as f:
for line in f:
line = line.strip()
if not line or line.startswith("#"):
continue
if "ERROR" in line:
print(line)

🔥Яндекс Образование приглашает студентов бакалавриата и специалитета IT-направлений со всей России на бесплатный студкемп по
🔥Яндекс Образование приглашает студентов бакалавриата и специалитета IT-направлений со всей России на бесплатный студкемп по аппаратной разработке умных устройств. Основные моменты: 🗓 Даты: с 13 по 24 апреля 📍 Место: Москва 💡 Формат: интенсивное офлайн-обучение В программе: - Полный цикл разработки умного устройства: от прототипа до готового продукта. - ML-интеграция в устройства с сохранением скорости и предсказуемости работы даже при ограниченных ресурсах. - Современные подходы к исследованиям и разработке умных устройств. Кто с вами будет работать? - Специалисты Яндекса, которые создавали Алису и другие умные устройства компании. - Преподаватели ФПМИ МФТИ, ФКН ВШЭ. - Эксперты ШАД. Участие бесплатное. Яндекс Образование покроет расходы на дорогу и проживание всем, кто пройдет отбор. Для участия нужно уметь работать с командной строкой и знать C++ или Java/Kotlin. 🔥 Набор открыт до 22 февраля, поэтому спешим регистрироваться по ссылке

🖥 Шпаргалка по тестированию функций на Python с использованием unittest Важно знать, что для эффективного тестирования кода можно использовать библиотеку unittest в Python. Это позволит вам автоматически проверять функциональность и находить ошибки. Вот пример простого теста для функции сложения:

import unittest
def add(a, b):
    return a + b
class TestAddFunction(unittest.TestCase):
    def test_add_positive(self):
        self.assertEqual(add(1, 2), 3)
    def test_add_negative(self):
        self.assertEqual(add(-1, 1), 0)
    def test_add_zero(self):
        self.assertEqual(add(0, 0), 0)
if __name__ == '__main__':
    unittest.main()

🔴 Реальный собес на Python от ТехЛида с опытом работы в Авито и Яндексе в прямом эфире 17 февраля(уже завтра!) в 19:00 по мс
🔴 Реальный собес на Python от ТехЛида с опытом работы в Авито и Яндексе в прямом эфире 17 февраля(уже завтра!) в 19:00 по мск приходи на прямой эфир с реальным собеседованием на Middle разработчика. Почему точно нужно прийти: 📂 Савва Демиденко, ТехЛид с опытом в Яндексе и Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Савва будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Савве Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. О рекламодателе.

⚠️ ИИ вызывает новый дефицит памяти Дата-центры для AI потребляют столько памяти, что её начинает не хватать остальной электр
⚠️ ИИ вызывает новый дефицит памяти Дата-центры для AI потребляют столько памяти, что её начинает не хватать остальной электронике. Что происходит на рынке: - Контрактные цены на DRAM выросли на 75% всего за месяц - Поставщики пересматривают цены ежедневно - Основные объёмы памяти уходят в AI-серверы Главная причина - переход на HBM (High Bandwidth Memory). HBM - это многослойная память (8–12 слоёв DRAM), которая работает рядом с ускорителями Nvidia и AMD и обеспечивает экстремальную пропускную способность. Масштаб потребления: - Один ускоритель Nvidia Blackwell — до 192 GB HBM - Система NVL72 - 13.4 TB памяти Прогнозы: - Спрос на HBM вырастет на 70% в 2026 году - Уже сейчас HBM занимает 23% производства DRAM (против 19% в 2025) Что это значит для рынка: Обычной памяти становится меньше для: - смартфонов - ПК - автомобилей - игровых консолей Выигрывают производители: Samsung, SK Hynix, Micron - рост маржи. Проигрывают продуктовые команды и компании, которые не могут заранее выкупить поставки. Главный вывод: ИИ начинает влиять не только на софт и модели. Он уже перераспределяет физические ресурсы всей индустрии электроники.

🖥 Шпаргалка по регулярным выражениям в Python Сохрани себе полезную шпаргалку по регулярным выражениям в Python. Эти выражения позволяют эффективно находить и обрабатывать текстовые данные. Важно знать базовые функции и методы, чтобы упростить свою работу с текстом.

import re
# Пример текста

text = "Контакт: example@example.com, телефон: +7-123-456-7890"

# Регулярные выражения для извлечения email и телефона
email_pattern = r'\b[\w.-]+?@\w+?\.\w{2,4}\b'
phone_pattern = r'\+?\d{1,2}[- ]?\d{3}[- ]?\d{3}[- ]?\d{4}'

# Найти все совпадения
emails = re.findall(email_pattern, text)
phones = re.findall(phone_pattern, text)

# Результат
print("Найденные email:", emails)
print("Найденные телефоны:", phones)

🖥 Новый курс на Stepik - PostgreSQL для разработчиков: от основ к созданию API Здесь на пальцах объясняют не только как писа
🖥 Новый курс на Stepik - PostgreSQL для разработчиков: от основ к созданию API Здесь на пальцах объясняют не только как писать SQL-запросы, а строить настоящие backend-сервисы с базой данных как у профи. В этом курсе ты шаг за шагом создашь REST API на FastAPI + PostgreSQL: от установки среды и первых таблиц - до масштабируемого приложения с безопасностью и CRUD-операциями. 🔹 На практике разберете: • SQL-запросы, фильтры, агрегаты и подзапросы • Связи между таблицами и нормализацию БД • Взаимодействие Python и PostgreSQL • Реализацию REST API и подключение базы • Оптимизацию и разбор реальных задач с собеседований ⚡ После курса у вас будет свой работающий API-проект и реальные навыки работы с PostgreSQL в продакшене. 🎁 Торопись пока действует скидка в честь нвого года! 🚀 Прокачаю свои знания: https://stepik.org/course/255542/

Идеальный старт для проекта Django: конфигурация окружения. Сохрани себе идеальный шаблон virtual environment и основных настроек для каждого нового проекта Django. Это упростит процесс настройки окружения и позволит избежать распространенных ошибок.

# Создание виртуального окружения
python3 -m venv venv

# Активация виртуального окружения
source venv/bin/activate

# Установка основных зависимостей
pip install django djangorestframework psycopg2

# Создание файла requirements.txt
pip freeze > requirements.txt

# Инициализация нового проекта Django
django-admin startproject myproject
# Переход в директорию проекта
cd myproject

# Запуск сервера для проверки
python manage.py runserver

🐳 Как запустить DeepSeek у себя на ПК через Python Главная ошибка новичков - сразу ставить огромные модели. Начни с компактной версии, проверь, что всё запускается, и только потом увеличивай размер. Алгоритм простой: 1) ставим зависимости 2) качаем лёгкую модель DeepSeek 3) проверяем, что она отвечает 4) при необходимости включаем GPU или берём квантизованную версию Так ты избежишь вылетов, перегрузки памяти и быстрее получишь рабочий результат.

установить зависимости
pip install transformers accelerate torch sentencepiece

# пример запуска DeepSeek из Python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_name = "deepseek-ai/deepseek-coder-6.7b-base"

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"   # если есть GPU — модель сама её использует
)

prompt = "Напиши на Python функцию, которая проверяет, простое ли число."

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=160,
    temperature=0.4
)

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Repost from Machinelearning
⚡️ Cowork стал доступен на Windows. Пользователи Windows теперь могут использовать все возможности Cowork: прямой доступ к файлам, выполнение многошаговых задач, поддержку плагинов и всех коннекторов MCP. Ранее этот функционал был эксклюзивом для яблочной платформы. Попутно Anthropic представила гибкую систему инструкций. Вы можете задать глобальные предпочтения: тон, формат ответов или описание своей роли, они будут применяться ко всем чатам. Также появились инструкции уровня папок: они активируются автоматически, когда вы работаете в конкретной директории. Обновлять эти настройки можно прямо в ходе диалога, не копаясь в меню. Инструмент все еще в стадии research preview и открыт для всех пользователей платных тарифов. Для доступа достаточно скачать свежую версию клиента с сайта. @ai_machinelearning_big_data #news #ai #ml

🖥 Python: пакет packaging стал ощутимо быстрее — и это реально заметно в больших проектах Свежий апдейт библиотеки packaging
+1
🖥 Python: пакет packaging стал ощутимо быстрее — и это реально заметно в больших проектах Свежий апдейт библиотеки packaging (библиотека, которую используют pip и многие инструменты для сравнения версий и работы с зависимостями) принёс заметное ускорение ключевых операций. Это важно, потому что такие функции вызываются тысячи раз при установке зависимостей, разрешении версий и т.д. Главное, что ускорили: • Быстрее парсинг и сравнение версий (`Version` и `SpecifierSet`). • Некоторые операции (сравнения, фильтрации, хэши) стали в несколько раз быстрее. • Оптимизации направлены на самые “узкие места”, которые чаще всего тормозят pip и другие инструменты. Почему это важно для тебя: • pip будет работать быстрее при установке больших стеков зависимостей. • Инструменты сборки и CI/CD быстрее считают совместимость версий. • Оптимизация сделана без потери корректности и без усложнения API. В целом это пример, как базовая утилита в экосистеме Python может ускориться не из-за нового синтаксиса, а за счёт глубокого профилирования и целевых улучшений. Подробнее о скорости и измерениях — в исходном разборе изменений. https://iscinumpy.dev/post/packaging-faster/

🖥 АВТОКЛИКЕР НА PYTHON ЗА 30 СЕКУНД. Автокликер — одна из самых полезных мини-автоматизаций на Python. Он помогает убрать рутину: клики в интерфейсах, тестирование кнопок, автоматическое выполнение повторяющихся действий в браузере или приложениях. Главная идея — управлять мышью программно. Библиотека pyautogui позволяет: • кликать в нужной точке экрана • двигать курсор • задавать интервалы между действиями • быстро остановить скрипт при необходимости Такой подход часто используют для: • UI-тестирования • автоматизации веб-задач • игр и симуляторов • массовых операций в админках Важно: всегда добавляйте задержку перед запуском, чтобы успеть переключиться в нужное окно. И используйте паузы между кликами, чтобы не перегружать систему.

Установка:
pip install pyautogui

import pyautogui
import time

# Безопасность: переместите мышь в верхний левый угол, чтобы аварийно остановить
pyautogui.FAILSAFE = True

# Пауза перед стартом (5 секунд, чтобы открыть нужное окно)
print("Старт через 5 секунд...")
time.sleep(5)

# Координаты для клика (узнать можно через pyautogui.position())
x, y = 800, 500

# Количество кликов
clicks = 100

# Интервал между кликами (в секундах)
interval = 0.5

for i in range(clicks):
    pyautogui.click(x, y)
    print(f"Клик {i+1}")
    time.sleep(interval)

print("Готово!")
⚡️Max

🐍 Самая крутая фича 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

🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас
🔥 Полезная подборка каналов только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇 🖥 ИИ: 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 Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.

🔥 КАК РАБОТАЕТ ВНИМАНИЕ (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 ("стол") самый большой, значит модель "смотрит" на него сильнее всего.

Рынок ИТ в 2026 сталжестче Работодатели ищут инженеров, которые умеют автоматизировать процессы, а не обслуживать их. Ваш ответ на вызов рынка — курс «Python для инженеров». Научитесь писать скрипты, чтобы: 🟢Ликвидировать ежедневную рутину 🟢Сосредоточиться на архитектуре и сложных задачах 🟢Стать специалистом, который экономит время и деньги компании 💡Инвестируйте в ключевое конкурентное преимущество 👉 CМОТРЕТЬ ПРОГРАММУ

🧩 Минималистичный код для Claude Nanocode — это компактная альтернатива Claude Code, реализованная в одном файле на Python б
🧩 Минималистичный код для Claude Nanocode — это компактная альтернатива Claude Code, реализованная в одном файле на Python без зависимостей. Он включает полный агентный цикл с использованием инструментов для работы с файлами и ведения истории беседы. 🚀Основные моменты: - Полный агентный цикл с использованием инструментов - Инструменты: read, write, edit, glob, grep, bash - Ведение истории беседы - Цветной вывод в терминале 📌 GitHub: https://github.com/1rgs/nanocode #python

Используй `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 - наш телеграм канал с уроками