es
Feedback
Python | Вопросы собесов

Python | Вопросы собесов

Ir al canal en Telegram

📈 Análisis del canal de Telegram Python | Вопросы собесов

El canal Python | Вопросы собесов (@python_easy_ru) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 13 108 suscriptores, ocupando la posición 9 742 en la categoría Tecnologías y Aplicaciones y el puesto 50 784 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 13 108 suscriptores.

Según los últimos datos del 06 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -52, y en las últimas 24 horas de -3, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 6.21%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 6.01% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 814 visualizaciones. En el primer día suele acumular 788 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 4.
  • Intereses temáticos: El contenido se centra en temas clave como ставь, модуль, строка, docker, alice.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 08 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

13 108
Suscriptores
-324 horas
-147 días
-5230 días
Archivo de publicaciones
🤔 Зачем нужны классы BaseExceptionGroup и ExceptionGroup? В Python 3.11 были добавлены новые классы исключений BaseExceptionGroup и ExceptionGroup. Эти классы решают проблему одновременной обработки нескольких исключений, которые могут возникать в сложных ситуациях, таких как асинхронное программирование, многопоточность или обработка нескольких связанных ошибок. Давайте разберем, зачем они нужны, как их использовать и какие преимущества они дают. 🚩Зачем нужны `BaseExceptionGroup` и `ExceptionGroup`? Ранее в Python было возможно выбросить только одно исключение за раз, и обработка нескольких исключений одновременно требовала сложного и неочевидного кода. Например: При работе с асинхронными функциями или потоками может возникнуть сразу несколько ошибок, и их нужно корректно обработать. В больших приложениях или библиотеках (например, при работе с asyncio) может быть необходимость передать сразу несколько исключений, которые произошли в разных местах, как единый объект. BaseExceptionGroup и его подкласс ExceptionGroup позволяют группировать несколько исключений и выбрасывать их вместе в виде одного объекта. Это делает код более читаемым, упрощает обработку и исключает необходимость ручной агрегации ошибок. 🚩Разница между `BaseExceptionGroup` и `ExceptionGroup` BaseExceptionGroup - это базовый класс для группировки исключений. Он наследуется от BaseException и, как правило, не используется напрямую. ExceptionGroup - это подкласс, который наследуется от Exception. Этот класс используется для обработки групп исключений, которые возникают при обычных ошибках в коде (не фатальных). 🚩Как они работают? Классы исключений BaseExceptionGroup и ExceptionGroup позволяют создать "группу исключений", которая содержит несколько отдельных исключений. Это полезно, когда вам нужно: Указать несколько ошибок одновременно. Позволить обработчику исключений работать с каждым из них.
def task_1():
    raise ValueError("Ошибка в задаче 1")

def task_2():
    raise TypeError("Ошибка в задаче 2")

try:
    # Создаем группу исключений
    raise ExceptionGroup(
        "Ошибки в задачах",
        [ValueError("Ошибка в задаче 1"), TypeError("Ошибка в задаче 2")]
    )
except ExceptionGroup as eg:
    for exc in eg.exceptions:
        print(f"Обнаружено исключение: {exc}")
Результат
Обнаружено исключение: Ошибка в задаче 1
Обнаружено исключение: Ошибка в задаче 2
🚩Обработка групп исключений При обработке ExceptionGroup можно использовать механизм фильтрации с помощью конструкции except*. Это нововведение в Python 3.11 позволяет обрабатывать разные типы исключений внутри группы по-разному.
try:
    raise ExceptionGroup(
        "Ошибки в задачах",
        [ValueError("Ошибка 1"), TypeError("Ошибка 2"), ValueError("Ошибка 3")]
    )
except* ValueError as ve:
    print("Обрабатываем ValueError:", ve)
except* TypeError as te:
    print("Обрабатываем TypeError:", te)
Результат
Обрабатываем ValueError: Ошибка 1
Обрабатываем ValueError: Ошибка 3
Обрабатываем TypeError: Ошибка 2
🚩Преимущества использованияРабота с несколькими исключениями одновременно. Вы можете объединить связанные ошибки и передать их в одном объекте. ➕Четкое разграничение типов исключений. Использование except* позволяет обработать каждое исключение из группы отдельно, не теряя гибкости. ➕Удобство при асинхронном программировании. В асинхронных задачах (asyncio) часто возникает несколько ошибок одновременно, и их можно группировать для дальнейшей обработки. ➕Упрощение сложной логики. Код становится проще и понятнее, так как не нужно вручную собирать и разбирать исключения. 🚩Когда использовать? Когда вы работаете с несколькими задачами, которые могут порождать ошибки одновременно (например, асинхронный код). Когда вы хотите сообщить о нескольких связанных ошибках, не выбрасывая каждую из них отдельно. Когда требуется раздельная обработка разных типов ошибок. Ставь 👍 и забирай 📚 Базу знаний

Бесплатный доступ к MBA Intensive – для руководителей В Школе Генерального Директора сегодня открыт бесплатный доступ на 2 дн
Бесплатный доступ к MBA Intensive – для руководителей В Школе Генерального Директора сегодня открыт бесплатный доступ на 2 дня к полноценному онлайн-курсу MBA Intensive при переходе из поста. Вы сможете пройти 500+ практических уроков совершенно бесплатно и улучшить управленческие навыки и понимание бизнес-процессов. После сдачи тестов доступен сертификат о прохождении уроков. Вот какие темы вы успеете изучить – выбирайте любую и приступайте прямо сейчас: 1. Лидерство, личная эффективность и эмоциональный интеллект 2. Управление персоналом 3. Финансы и экономика 4. Торговля и сервис 5. Операционная деятельность и принятие решений 6. Project management 7. Управление маркетингом Оставляйте заявку по ссылке >>> Подать заявку #реклама 16+ gd.ru О рекламодателе

🤔 Что делать, если нужно перехватить исключение, выполнить действия и снова возбудить это же исключение? Нужно сохранить ссылку на исключение и снова поднять его с помощью raise. Это полезно, если нужно добавить логирование или дополнительные действия перед пробросом. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое git stash? git stash — это команда в Git, которая сохраняет незакоммиченные изменения во временное хранилище (stash) и очищает рабочую директорию. 🚩Когда это полезно? Нужно переключиться на другую ветку, но есть незаконченные изменения. Хочешь сохранить текущую работу, но не коммитить её. Нужно экспериментировать, но без риска потерять код. 🚩Как использовать `git stash`? Сохранить изменения в stash
git stash
Посмотреть список сохранённых изменений
git stash list
Выведет список всех stash-ов
stash@{0}: WIP on main: 1234567 Добавил новую фичу
stash@{1}: WIP on dev: 89abcde Исправил баг
Восстановить сохранённые изменения
git stash pop  # Восстановит изменения и удалит stash
ИЛИ
git stash apply  # Восстановит, но stash останется в списке
Удалить stash после применения
git stash drop stash@{0}  # Удалит конкретный stash
git stash clear  # Удалит все stash'и
🚩Пример использования Сценарий - Ты работаешь в ветке main, но нужно срочно переключиться на dev. - У тебя есть изменения, которые ты не хочешь коммитить. Решение
git stash          # Сохраняем изменения
git checkout dev   # Переключаемся на другую ветку
# Делаем нужную работу...
git checkout main  # Возвращаемся в основную ветку
git stash pop      # Восстанавливаем изменения
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что происходит, когда вводите адрес в адресную строку браузера и нажимаете ввод? Процесс включает несколько этапов: 1. Разбор URL — браузер определяет протокол, домен и путь. 2. DNS-запрос — IP-адрес домена ищется через DNS-сервер. 3. Установка соединения — устанавливается TCP-соединение с сервером, при HTTPS — с использованием TLS. 4. Отправка HTTP-запроса — браузер отправляет GET-запрос. 5. Получение ответа — сервер отправляет HTML, CSS, JS, изображения и т. д. 6. Обработка и рендеринг — браузер обрабатывает и отображает страницу. 7. Дополнительные запросы — выполняются асинхронные вызовы, скрипты, загрузка шрифтов и т.д. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

E-CUP возвращается. Реальные данные. Масштабные проекты. Большие призы E-CUP 2025 — соревнование, где Everything as code. Реш
E-CUP возвращается. Реальные данные. Масштабные проекты. Большие призы E-CUP 2025 — соревнование, где Everything as code. Решай ML-задачи в стиле Ozon Tech. Призовой фонд — 7 200 000 рублей 🔥 Хочешь участвовать, но не знаешь, с чего начать? Codenrock подготовил курс для новичков — простой и понятный разбор типичных задач, форматов и подходов в машинном обучении. Регистрируйся, изучай и побеждай! 🗓 Регистрация: https://cnrlink.com/ecup25easypy 💻 Формат участия: онлайн 👥 Команда: от 1 до 5 человек 🎯 Для кого: Data Scientists, ML-специалисты, аналитики данных, дата-инженеры, специалисты Big Data и разработчики, которые интересуются ML/DS. Что вас ждёт: 🔹 Работа над проектом для миллионов пользователей на основе данных от ведущего e-com в России. 🔹 Призовой фонд — 7 200 000 рублей для девяти сильнейших команд. 🔹 Обмен опытом с экспертами Ozon Tech. 🔹 Эксклюзивный мерч и подарки. 🔹 Питчинг — онлайн или очно на конференции E-CODE. Финалистам Ozon Tech предоставит билеты и оплатит поездку. Регистрация открыта до 17 августа включительно

Квартиры в центре Мытищ в ипотеку от 28 933 руб/мес. ЖК «Страна.Парковая» — квартал от федерального застройщика «Страна Девел
Квартиры в центре Мытищ в ипотеку от 28 933 руб/мес. ЖК «Страна.Парковая» — квартал от федерального застройщика «Страна Девелопмент» в центре Мытищ! Рядом парки Мира и Яуза, школы и детские сад. Внутри проекта: свой пешеходный бульвар с площадками по интересам, камерные дворы и подземный паркинг с кладовыми. Москва совсем близко: 20 минут до ВДНХ, 65 — до Красной площади. Успейте поймать акции в проекте: ✅ ремонт или паркинг в подарок; ✅ скидки до 7,2 млн руб. ✅ платёж от 28 933 руб/мес; Получите подборку планировок! Узнать больше Изучите все условия кредита (займа) на сайте в соответствующем разделе. Оценивайте свои финансовые возможности и риски. Проектная декларация на сайте https://наш.дом.рф/. Застройщик: ООО СЗ «На Минской». Финансовые услуги оказывает: ПАО «МОСКОВСКИЙ КРЕДИТНЫЙ БАНК», ООО СЗ «На Минской». #реклама strana-development.ru О рекламодателе

🤔 В чем отличие изменяемые / неизменяемые? В Python все данные делятся на изменяемые (mutable) и неизменяемые (immutable) 🚩Неизменяемые (`immutable`) типы После создания их нельзя изменить!
x = 10
print(id(x))  # 140735598722544 (адрес в памяти)

x = x + 5  # Создаётся новый объект!
print(id(x))  # 140735598722704 (новый адрес)
Пример: str неизменяемая
s = "hello"
print(id(s))  # 140735598723664

s = s + " world"  # Создаётся новая строка!
print(id(s))  # 140735598724240 (новый адрес)
🚩Изменяемые (`mutable`) типы Можно менять их содержимое без создания нового объекта.
lst = [1, 2, 3]
print(id(lst))  # 140735598722544

lst.append(4)  # Изменяем список
print(id(lst))  # 140735598722544 (адрес остался тот же!)
Пример: dict изменяемый
d = {"name": "Alice"}
print(id(d))  # 140735598723664

d["age"] = 25  # Добавляем ключ
print(id(d))  # 140735598723664 (адрес не изменился!)
🚩Почему это важно? Неизменяемые объекты безопаснее для ключей dict и set
d = {}
d[[1, 2, 3]] = "Ошибка!"  # ❌ TypeError: unhashable type: 'list'
Используем tuple вместо list (он неизменяемый)
d[(1, 2, 3)] = "OK"
Ошибки с изменяемыми значениями по умолчанию
def add_item(lst=[]):  # ❌ Опасный код!
    lst.append(1)
    return lst

print(add_item())  # [1]
print(add_item())  # [1, 1]  ❌ Список не создаётся заново!
Используем None вместо списка
def add_item(lst=None):
    if lst is None:
        lst = []
    lst.append(1)
    return lst
🚩Копирование объектов (`copy()` vs `deepcopy()`) copy() делает поверхностную копию (новый объект, но старые вложенные элементы). deepcopy() делает глубокую копию (всё новое).
import copy

lst1 = [[1, 2, 3], [4, 5, 6]]
lst2 = copy.copy(lst1)  # Поверхностная копия

lst2[0][0] = 99
print(lst1)  # [[99, 2, 3], [4, 5, 6]] ❌ Исходный список изменился!
Используем deepcopy() для полной независимой копии
lst3 = copy.deepcopy(lst1)
lst3[0][0] = 100
print(lst1)  # [[99, 2, 3], [4, 5, 6]] ✅ Не изменился!
Ставь 👍 и забирай 📚 Базу знаний

Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участ
Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

Repost from easyoffer
Официальный релиз easyoffer 2.0 состоится уже в течение нескольких дней. Напоминаю, что в честь релиза запускаем акцию. Первые 500 покупателей получат: 🚀 Скидку 50% на PRO тариф на 1 год 🎁 Подарок ценностью 5000₽ для тех, кто подписан на этот канал 🔔 Подпишитесь на этот канал: https://t.me/+b2fZN17A9OQ3ZmJi В нем мы опубликуем сообщение о релизе в первую очередь

🤔 Отличия второго Python от третьего? Python 3 не совместим с Python 2. Основные отличия: – другой синтаксис print, – по-другому работают строки и деление, – улучшенная поддержка Unicode, – другие библиотеки и подходы к обработке данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Мультитрек для опытных бэкенд-разработчиков Ищем бэкенд-разработчиков с 5+ годами опыта на C++, Java/Kotlin, Go или Python в команды Яндекса. Здесь мы вместе строим технологии, которые меняют мир. Создаём продукты на основе ИИ и машинного обучения, формируем сильную инженерную культуру, внедряем научный подход. Специально для соискателей мы разработали Мультитрек — программу, где можно попробовать задачи на практике перед тем, как выбрать команду и проект. Как всё устроено: до 18 августа оставляете заявку, 23 августа решаете задачи для разработчиков на технических секциях, 24 августа завершаете собеседование и получаете офер. Дальше вы сможете попробовать себя в трёх командах: поработать в каждой по 3–4 недели, изучить процессы, познакомиться с коллегами и выбрать лучший для себя проект. Узнать больше #реклама 16+ yandex.ru О рекламодателе

🤔 Как избежать конфликтов при импорте файлов? Когда в проекте много файлов, могут возникать конфликты импортов. Python ищет модули в определённом порядке, и если несколько файлов имеют одинаковые имена или неправильные пути, может возникнуть ошибка. 🚩Способы избежать конфликтов при импорте 🟠Используйте явные пути импорта Вместо
import mymodule  # Может вызвать конфликт, если есть несколько файлов с таким именем
Лучше указывать полный путь в пакетах
from myproject.utils.mymodule import my_function
🟠Избегайте конфликтов имён файлов Если у вас есть файл math.py, импорт import math будет загружать ваш файл, а не стандартный модуль math из Python. - Не называйте файлы именами стандартных модулей: math.py, sys.py, json.py. - Проверьте, какой именно модуль загружается:
  import math
  print(math.__file__)  # Путь к загруженному модулю
  
🟠Добавьте `__init__.py` в пакеты Если у вас есть структура
/myproject
    /utils
        mymodule.py
Решение Добавьте пустой __init__.py в utils/:
/myproject
    /utils
        __init__.py  # Делаем utils пакетом
        mymodule.py
Теперь импорт будет работать
from utils import mymodule
🟠Используйте `sys.path.append()` для указания путей Иногда Python не находит модуль, если он находится вне стандартных путей. Решение Добавьте путь вручную:
import sys
sys.path.append("/path/to/directory")

import mymodule  # Теперь импорт будет работать
🟠Используйте `absolute` и `relative` импорт в пакетах Абсолютный импорт (рекомендуется)
from myproject.utils.mymodule import my_function
Относительный импорт (используется внутри пакетов):
from .mymodule import my_function
🟠Проверяйте `sys.modules` и `sys.path` Если импорт не работает, проверьте, какие модули загружены и где Python ищет файлы
import sys
print(sys.modules.keys())  # Список загруженных модулей
print(sys.path)  # Пути, где Python ищет модули
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что происходит при обращении к сайту? Когда ты вводишь адрес сайта в браузере и нажимаешь Enter, происходит следующее: 1. DNS-запрос — доменное имя (например, example.com) преобразуется в IP-адрес. 2. Установка соединения — браузер открывает TCP-соединение с сервером, часто с использованием HTTPS (т.е. через TLS). 3. Отправка HTTP-запроса — браузер отправляет, например, GET /, чтобы получить главную страницу. 4. Обработка на сервере — сервер принимает запрос, обрабатывает его и формирует ответ. 5. Получение ответа — браузер получает HTML-страницу, начинает загружать CSS, JS, изображения и прочее. 6. Рендеринг страницы — браузер строит DOM и отображает контент пользователю. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Регистрируйтесь на Yandex Ecom Open Air 8 августа Море инсайтов для бизнеса, музыкальный open-air, лекции и нетворкинг. Участие бесплатно! Зарегистрироваться #реклама 18+ ecomfest.ru О рекламодателе

🤔 Какие есть коды ошибок HTTP? В HTTP коды состояния указывают, как сервер обработал запрос. Они делятся на 5 категорий: 1xx (Информационные – запрос принят, продолжаем. 2xx (Успешные) – всё хорошо. 3xx (Перенаправления) – запрашиваемый ресурс перемещён. 4xx (Ошибки клиента) – клиент отправил неправильный запрос. 5xx (Ошибки сервера) – сервер не смог обработать запрос. 🚩Как исправить ошибки HTTP? 4xx: 400: Проверить формат запроса. 401: Убедиться, что пользователь авторизован. 403: Проверить права доступа. 404: Убедиться, что URL правильный. 5xx: 500: Проверить код сервера (ошибки в логах). 502/504: Проверить настройки Nginx/Proxy. 503: Сервер перегружен → добавить балансировку нагрузки. Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём отличие [x for x in y] от (x for x in y)? Квадратные скобки создают список, а круглые — генератор. Список сразу хранит все значения в памяти, генератор же отдаёт элементы по одному при необходимости, экономя ресурсы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего нужны библиотеки sqlparse, asgiref в Django? Django использует sqlparse и asgiref как вспомогательные библиотеки для работы с SQL и асинхронностью. Разберём их назначение подробно. 🟠`sqlparse` – разбор SQL-запросов sqlparse (SQL Parser) — это библиотека для анализа, форматирования и обработки SQL-запросов. В Django она используется в админке, логах и отладке ORM. 🚩Где используется в Django? Форматирование SQL-запросов в django.db.connection.queries
   from django.db import connection
   from sqlparse import format

   queries = connection.queries  # Получаем список SQL-запросов
   for q in queries:
       print(format(q["sql"], reindent=True, keyword_case="upper"))  # Красивый SQL
Логирование SQL-запросов sqlparse помогает Django красиво выводить SQL-запросы в DEBUG=True. Команда sqlmigrate
   python manage.py sqlmigrate app_name 0001
🟠`asgiref` – асинхронность в Django asgiref (Asynchronous Server Gateway Interface Reference) — это библиотека, которая помогает Django работать в асинхронном (async) режиме. Django поддерживает ASGI с версии 3.0, и asgiref — это её обязательная зависимость. 🚩Где используется в Django? 🟠Поддержка ASGI Django с версии 3.0 поддерживает асинхронные вьюхи, WebSockets и асинхронные базы данных (например, с asyncpg). В settings.py есть параметр:
     ASGI_APPLICATION = "myproject.asgi.application"
🟠Асинхронные middleware Django 4.x поддерживает асинхронные middleware через asgiref.sync и asgiref.local. 🟠Преобразование `async` → `sync` и наоборот Django использует sync_to_async() и async_to_sync() из asgiref:
     from asgiref.sync import sync_to_async

     def sync_function():
         return "Hello from sync!"

     async_function = sync_to_async(sync_function)
     print(async_function())  # Вызывает синхронную функцию в асинхронном коде
🟠Локальное хранилище для асинхронных задач (`asgiref.local.Local`) Позволяет хранить данные отдельно для каждого потока или запроса. Ставь 👍 и забирай 📚 Базу знаний

🤔 Для чего нужны предупреждения (warnings) и как создать собственное? Предупреждения — это сообщения о потенциальных проблемах, которые не прерывают выполнение. Их можно создать с помощью модуля warnings и вызвать через warn(). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Хочешь стать востребованным дизайнером? Приходи на очный митап Школы дизайна 9 августа. Школа дизайна — новое направление в Ц
Хочешь стать востребованным дизайнером? Приходи на очный митап Школы дизайна 9 августа. Школа дизайна — новое направление в Центральном университете. На митапе выступят спикеры от студий «Щёлочь», Dprofile и Duo Sapiens. Ты узнаешь: Как развиваться в дизайн-индустрии Что должно быть в портфолио дизайнера Как продвигаться на Dprofile Что будет в программе Школы дизайна Когда: 9 августа Где: Москва, кампус Центрального университета на Гашека, 7 Подать заявку #реклама 16+ event.centraluniversity.ru О рекламодателе