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

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

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Python | Вопросы собесов

تُعد قناة Python | Вопросы собесов (@python_easy_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 13 108 مشتركاً، محتلاً المرتبة 9 742 في فئة التكنولوجيات والتطبيقات والمرتبة 50 784 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 13 108 مشتركاً.

بحسب آخر البيانات بتاريخ 06 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -52، وفي آخر 24 ساعة بمقدار -3، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 6.21‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 6.01‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 814 مشاهدة. وخلال اليوم الأول يجمع عادةً 788 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 4.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, модуль, строка, docker, alice.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Cайт: easyoffer.ru Реклама: @easyoffer_adv ВП: @easyoffer_vp Тесты t.me/+20tRfhrwPpM4NDQy Задачи t.me/+nsl4meWmhfQwNDVi Вакансии t.me/+cXGKkrOY2-w3ZTky

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 08 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

13 108
المشتركون
-324 ساعات
-147 أيام
-5230 أيام
أرشيف المشاركات
🤔 Зачем нужны классы 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 О рекламодателе