Можно ли объявлять функцию внутри другой функции? Где она будет видна?
Да, функции можно объявлять внутри других функций. Такая вложенная функция будет видна и доступна для вызова только внутри родительской функции, в которой она определена.
Это называется замыканием и позволяет ограничить область видимости вложенной функции, чтобы она не загрязняла глобальное пространство имен.
Вложенные функции могут быть полезны, когда нужно реализовать вспомогательную логику, связанную только с работой родительской функции.
Библиотека собеса по Python
Это называется замыканием и позволяет ограничить область видимости вложенной функции, чтобы она не загрязняла глобальное пространство имен.
Вложенные функции могут быть полезны, когда нужно реализовать вспомогательную логику, связанную только с работой родительской функции.
Библиотека собеса по Python
Как решить проблему конфликта зависимостей?
Конфликт зависимостей может возникнуть, когда два разных пакета требуют разные версии одной и той же зависимости.
Эту проблему можно решить с помощью менеджера пакетов pipenv, который автоматически устанавливает версии таким образом, чтобы они не конфликтовали друг с другом.
Вместо requirements.txt pipenv предоставляет файл pipenv с версиями пакетов.
При этом один из недостатков pipenv состоит в том, что создание файла pipenv занимает очень много времени.
Для проверки наличия конфликта зависимостей у пакета можно использовать команду pip check.
Библиотека собеса по Python
Эту проблему можно решить с помощью менеджера пакетов pipenv, который автоматически устанавливает версии таким образом, чтобы они не конфликтовали друг с другом.
Вместо requirements.txt pipenv предоставляет файл pipenv с версиями пакетов.
При этом один из недостатков pipenv состоит в том, что создание файла pipenv занимает очень много времени.
Для проверки наличия конфликта зависимостей у пакета можно использовать команду pip check.
Библиотека собеса по Python
👍4❤🔥1
В чем разница между модулем, пакетом и библиотекой?
Модуль — это просто файл Python, который предназначен для импорта в скрипты или в другие модули. Он содержит функции, классы и глобальные переменные.
Пакет — это набор модулей, которые сгруппированы вместе внутри папки для обеспечения согласованной функциональности. Пакеты могут быть импортированы точно так же, как модули. Обычно в них есть init.pyfile, который указывает интерпретатору Python обрабатывать их.
Библиотека — это набор пакетов.
Библиотека собеса по Python
Пакет — это набор модулей, которые сгруппированы вместе внутри папки для обеспечения согласованной функциональности. Пакеты могут быть импортированы точно так же, как модули. Обычно в них есть init.pyfile, который указывает интерпретатору Python обрабатывать их.
Библиотека — это набор пакетов.
Библиотека собеса по Python
👍4
мКак вычислить среднее значение, медиану, моду, дисперсию, стандартное отклонение и различные квантильные диапазоны в Pandas?
✔️ DataFrame.mean(): среднее
✔️ DataFrame.median(): медиана
✔️ DataFrame.mode(): мода
✔️ DataFrame.var(): дисперсия
✔️ DataFrame.std(): стандартное отклонение
✔️ DataFrame.quantile(): для расчета квантильного диапазона, используя значение диапазона в качестве параметра
Библиотека собеса по Python
✔️ DataFrame.median(): медиана
✔️ DataFrame.mode(): мода
✔️ DataFrame.var(): дисперсия
✔️ DataFrame.std(): стандартное отклонение
✔️ DataFrame.quantile(): для расчета квантильного диапазона, используя значение диапазона в качестве параметра
Библиотека собеса по Python
👍5
Как отвечать на вопросы про LLM-разработку?
Спрос на Python-разработчиков, умеющих работать с агентами, растёт. Курс «Разработка ИИ-агентов» — это способ быстро освоить актуальный стек.
Что изучим на практике:
—
— протоколы
— интеграцию векторных баз данных;
— безопасность и оптимизацию агентов.
Первая лекция уже доступна. Посмотрите её, чтобы понимать тренды и увереннее чувствовать себя на интервью.
Записаться
Смотреть лекцию
Спрос на Python-разработчиков, умеющих работать с агентами, растёт. Курс «Разработка ИИ-агентов» — это способ быстро освоить актуальный стек.
Что изучим на практике:
—
LangFlow и AutoGen;— протоколы
MCP и A2A;— интеграцию векторных баз данных;
— безопасность и оптимизацию агентов.
Первая лекция уже доступна. Посмотрите её, чтобы понимать тренды и увереннее чувствовать себя на интервью.
Записаться
Смотреть лекцию
Чем «data»-дескриптор отличается от «non-data», как это влияет на порядок поиска атрибута, и почему @property — это тоже дескриптор?
В Python любой объект с __get__ — дескриптор.
Non-data дескриптор: имеет только __get__. Проигрывает записи в obj.__dict__. @property — именно non-data дескриптор.
Data дескриптор: имеет __set__ и/или __delete__. Имеет приоритет над obj.__dict__, блокируя прямую подмену.
Порядок разрешения атрибутов (__getattribute__): data-denoscriptor → obj.__dict__ → non-data denoscriptor/атрибут класса → __getattr__.
Пишите свой data-дескриптор для переиспользуемой логики: валидация, типизация, lazy/кэш, связка с внешними ресурсами.
Библиотека собеса по Python
Non-data дескриптор: имеет только __get__. Проигрывает записи в obj.__dict__.
Data дескриптор: имеет __set__ и/или __delete__. Имеет приоритет над obj.__dict__, блокируя прямую подмену.
Порядок разрешения атрибутов (__getattribute__): data-denoscriptor → obj.__dict__ → non-data denoscriptor/атрибут класса → __getattr__.
Пишите свой data-дескриптор для переиспользуемой логики: валидация, типизация, lazy/кэш, связка с внешними ресурсами.
Библиотека собеса по Python
❤2👍1
Вопрос с собеседования: «Как реализовать память в LLM-приложении?»
Если в 2026 году вы ответите «просто передам всю историю переписки», вы не пройдёте. Контекстное окно всё ещё стоит денег, а RAG стал стандартом.
На курсе мы разбираем профессиональные паттерны: Summary Memory, Vector Store Memory, Entity Memory. Мы учим строить архитектуру, которая эффективна и масштабируема. Это то, что отличает джуна от сильного разработчика.
Что прокачаем:
— Работу с асинхронностью в Python (для стриминга токенов).
— Проектирование сложных пайплайнов на
— Интеграцию агентов с внешними API и базами данных.
Узнать подробности курса
Если в 2026 году вы ответите «просто передам всю историю переписки», вы не пройдёте. Контекстное окно всё ещё стоит денег, а RAG стал стандартом.
На курсе мы разбираем профессиональные паттерны: Summary Memory, Vector Store Memory, Entity Memory. Мы учим строить архитектуру, которая эффективна и масштабируема. Это то, что отличает джуна от сильного разработчика.
Что прокачаем:
— Работу с асинхронностью в Python (для стриминга токенов).
— Проектирование сложных пайплайнов на
LangGraph.— Интеграцию агентов с внешними API и базами данных.
Узнать подробности курса
Какой метод использовался до оператора in для проверки наличия ключа в словаре?
До появления оператора in в Python, чтобы проверить, содержит ли словарь определенный ключ, использовался метод словаря has_key().
Этот метод принимал в качестве аргумента проверяемый ключ и возвращал логическое значение - True, если ключ присутствовал в словаре, и False - если нет.
В Python 2.5 появился более понятный и краткий оператор in, поэтому сейчас рекомендуется использовать именно его, а has_key() считается устаревшим.
Библиотека собеса по Python
Этот метод принимал в качестве аргумента проверяемый ключ и возвращал логическое значение - True, если ключ присутствовал в словаре, и False - если нет.
В Python 2.5 появился более понятный и краткий оператор in, поэтому сейчас рекомендуется использовать именно его, а has_key() считается устаревшим.
Библиотека собеса по Python
👍6
Почему @dataclass(eq=True) без frozen по умолчанию не хэшируем?
Потому что при наличии __eq__ и изменяемости нарушается инвариант хэша; Python выставляет __hash__ = None. Нужно либо frozen=True (тогда хэш генерится), либо явно определить __hash__/использовать unsafe_hash=True на свой риск.
Библиотека собеса по Python
Библиотека собеса по Python
👍3
Что такое подгенератор (subgenerator)?
Подгенератор создается с помощью конструкции yield from внутри генератора.
Использование подгенераторов позволяет разбить генератор на несколько частей для упрощения кода и оптимизации памяти. Это полезный инструмент при работе с последовательностями.
Механизм передает значения между генераторами без сохранения всей последовательности в памяти и блокирует основной генератор до полного завершения подгенератора.
Библиотека собеса по Python
Использование подгенераторов позволяет разбить генератор на несколько частей для упрощения кода и оптимизации памяти. Это полезный инструмент при работе с последовательностями.
Механизм передает значения между генераторами без сохранения всей последовательности в памяти и блокирует основной генератор до полного завершения подгенератора.
Библиотека собеса по Python
🤔4👍2
Миксин — это
Миксины не предназначены для
class NowMixin:
def now(self):
return datetime.datetime.utcnow()
class Logger(NowMixin):
pass
logger = Logger()
print(logger.now())
— В названиях миксинов часто добавляют суффикс Mixin, чтобы
— Миксин — это технически
— Позволяет избежать
Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Сопрограмма (coroutine) — это
— писать асинхронный код без коллбеков
— выполнять неблокирующие операции в одном потоке
— использовать кооперативную многозадачность
Библиотека собеса по Python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что такое GIL в CPython, как он влияет на многопоточность, и какие практики выбирать для CPU-bound и I/O-bound задач?
GIL — глобальная блокировка интерпретатора в CPython: одновременно байткод исполняет только один поток.
CPU-bound: потоки не масштабируются по ядрам → берите процессы (multiprocessing/процесс-пулы), векторизацию/библиотеки, которые освобождают GIL (напр. NumPy), нативные расширения или вынос в отдельные сервисы.
I/O-bound: потоки подходят (блокирующие I/O обычно отпускают GIL); альтернативно — asyncio с неблокирующими вызовами.
Важно: asyncio не ускоряет CPU-bound; смешивайте — тяжёлое CPU выносите в процессы/С, блокирующее I/O — в пул потоков; измеряйте и следите, чтобы в async-код не просачивались блокировки.
Имплементации: поведение касается CPython; в других реализациях Python механизм отличается.
Библиотека собеса по Python
CPU-bound: потоки не масштабируются по ядрам → берите процессы (multiprocessing/процесс-пулы), векторизацию/библиотеки, которые освобождают GIL (напр. NumPy), нативные расширения или вынос в отдельные сервисы.
I/O-bound: потоки подходят (блокирующие I/O обычно отпускают GIL); альтернативно — asyncio с неблокирующими вызовами.
Важно: asyncio не ускоряет CPU-bound; смешивайте — тяжёлое CPU выносите в процессы/С, блокирующее I/O — в пул потоков; измеряйте и следите, чтобы в async-код не просачивались блокировки.
Имплементации: поведение касается CPython; в других реализациях Python механизм отличается.
Библиотека собеса по Python
👍3
Объясни, как Django управляет транзакциями: autocommit, transaction.atomic() (savepoint’ы и «broken» состояние), ATOMIC_REQUESTS, когда нужен select_for_update(), и что учитывать с CONN_MAX_AGE/PgBouncer.
По умолчанию autocommit: каждый ORM-запрос, меняющий БД, — своя транзакция. atomic() начинает транзакцию (или создаёт savepoint при вложенности); исключение помечает блок как broken → откат до ближайшего savepoint/транзакции; при выходе — commit или rollback. ATOMIC_REQUESTS=True автоматически оборачивает view, но может растягивать транзакции (долгие I/O, внешние вызовы) — применять выборочно. select_for_update() требует активной транзакции (atomic()), в Postgres можно nowait/skip_locked для борьбы с блокировками. Изоляция — та, что у БД (обычно READ COMMITTED). Соединения: CONN_MAX_AGE удерживает их открытыми; в проде обычно PgBouncer (session/transaction mode), следи за совместимостью с server-side курсорами и длительными транзакциями.
Библиотека собеса по Python
Библиотека собеса по Python
👍1
Как и для чего используется %s?
%s — это Спецификатор формата и он используется для форматирования строк.
Он позволяет вставлять значения других типов (числа, объекты и т. д.) в строковые выражения, автоматически преобразуя их к строковому представлению.
%s заменяется на строковое представление переданного значения в процессе форматирования. Это удобный способ интерполяции строк.
Помимо простой интерполяции, %s полезен для оформления вывода данных в консоль, логгирования, составления SQL-запросов с подстановкой значений и других задач работы со строками.
Библиотека собеса по Python
Он позволяет вставлять значения других типов (числа, объекты и т. д.) в строковые выражения, автоматически преобразуя их к строковому представлению.
%s заменяется на строковое представление переданного значения в процессе форматирования. Это удобный способ интерполяции строк.
Помимо простой интерполяции, %s полезен для оформления вывода данных в консоль, логгирования, составления SQL-запросов с подстановкой значений и других задач работы со строками.
Библиотека собеса по Python
👍1
Вы разрабатываете высоконагруженный сервис на FastAPI. При нагрузочном тестировании видно, что время отклика сильно растёт, хотя CPU и память используются не полностью. Какие могут быть причины и как вы будете решать проблему?
Чаще всего проблема в блокирующем коде (синхронные запросы к БД, внешним API или тяжёлые вычисления), который “забивает” event loop. Нужно вынести такие операции в ThreadPoolExecutor/ProcessPoolExecutor или заменить их на асинхронные аналоги (например, httpx.AsyncClient, databases, async-драйверы для SQL/NoSQL). Также стоит проверить конфигурацию Uvicorn/Gunicorn (число воркеров, workers-per-core) и настроить connection pooling.
Библиотека собеса по Python
Библиотека собеса по Python
👍2
System Design интервью для AI-сервисов
Как спроектировать агента, который не «съест» весь бюджет и не упадёт под нагрузкой? Это ключевой вопрос 2026 года. Ответы — в нашем обновлённом курсе
«Разработка AI-агентов».
Ключевые темы:
🔹 Экономика. Роутинг моделей, кэширование, лимиты.
🔹 Надёжность.
🔹 Интеграция. Встраивание AI в существующий Python-бэкенд.
Стартуй сейчас! Не жди потока, материалы доступны сразу.
🎟 ПромокодAgent — скидка 10 000 ₽ (до 28 февраля).
👉 Прокачать System Design
Как спроектировать агента, который не «съест» весь бюджет и не упадёт под нагрузкой? Это ключевой вопрос 2026 года. Ответы — в нашем обновлённом курсе
«Разработка AI-агентов».
Ключевые темы:
🔹 Экономика. Роутинг моделей, кэширование, лимиты.
🔹 Надёжность.
Human-in-the-loop, runbooks, восстановление состояний.🔹 Интеграция. Встраивание AI в существующий Python-бэкенд.
Стартуй сейчас! Не жди потока, материалы доступны сразу.
🎟 Промокод
👉 Прокачать System Design
❤1
Вы запускаете высоконагруженный Python-сервис на asyncio. Со временем отклик начинает расти, хотя CPU и память загружены слабо. В чём может быть причина и как подойти к решению?
Обычно это значит, что внутри event loop выполняется блокирующий код (синхронные запросы к БД, тяжёлые вычисления, блокирующие I/O). Их нужно вынести в отдельные процессы/пулы потоков (ProcessPoolExecutor, ThreadPoolExecutor) или заменить на асинхронные аналоги библиотек.
Библиотека собеса по Python
Библиотека собеса по Python
👍2
Как FastAPI обрабатывает зависимости с Depends, и как происходит их разрешение в контексте асинхронных и синхронных функций?
FastAPI строит граф зависимостей рекурсивно при старте приложения. При обработке запроса оно вызывает зависимости в порядке topological sort. Асинхронные зависимости вызываются с await, синхронные — через обычный вызов. FastAPI автоматически определяет тип зависимости по сигнатуре. Повторно используемые зависимости кэшируются внутри одного запроса. Исключения в зависимостях прерывают цепочку и оборачиваются в HTTP-ответ.
Библиотека собеса по Python
Библиотека собеса по Python
👍1
Что спросят на собеседовании AI-инженера в 2026 году?
«Как написать промпт» — этот вопрос уже никто не задаёт. На сеньорских собесах теперь спрашивают: как защитить агента от бесконечного цикла, как настроить time-travel в LangGraph и как парсить кривые таблицы для RAG.
Мы полностью обновили наш курс по AI-агентам. Это мощный инженерный гайд, который закроет все пробелы в System Design LLM-приложений и подготовит вас к сложным продакшн-задачам.
Что вы заберёте в свой арсенал:
🔹 хардкорный RAG: продвинутые подходы к извлечению данных и улучшению поисковых запросов;
🔹 оркестрация: human-in-the-loop, восстановление состояний и runbooks;
🔹 LLMOps: тестирование, оценка качества, логирование и выявление регрессий;
🔹 экономика ИИ: жёсткий контроль токенов, кэш и переключение производительности;
🔹 легальный деплой: как разворачивать агентов строго по 152-ФЗ.
До 28 февраля действует скидка 10 000 рублей по промокоду
Участвуйте в акции «3 курса по цене 1» и получайте ещё два направления бесплатно.
Прокачать навыки для Senior AI Engineer
«Как написать промпт» — этот вопрос уже никто не задаёт. На сеньорских собесах теперь спрашивают: как защитить агента от бесконечного цикла, как настроить time-travel в LangGraph и как парсить кривые таблицы для RAG.
Мы полностью обновили наш курс по AI-агентам. Это мощный инженерный гайд, который закроет все пробелы в System Design LLM-приложений и подготовит вас к сложным продакшн-задачам.
Что вы заберёте в свой арсенал:
🔹 хардкорный RAG: продвинутые подходы к извлечению данных и улучшению поисковых запросов;
🔹 оркестрация: human-in-the-loop, восстановление состояний и runbooks;
🔹 LLMOps: тестирование, оценка качества, логирование и выявление регрессий;
🔹 экономика ИИ: жёсткий контроль токенов, кэш и переключение производительности;
🔹 легальный деплой: как разворачивать агентов строго по 152-ФЗ.
До 28 февраля действует скидка 10 000 рублей по промокоду
Agent.Участвуйте в акции «3 курса по цене 1» и получайте ещё два направления бесплатно.
Прокачать навыки для Senior AI Engineer
К чему может быть применен декоратор?
Декораторы можно применять к:
— Обычным функциям, определенным с помощью def.
— Методам классов.
— Статическим методам и методам класса внутри классов.
— Lambda функциям.
— Методам встроенных типов в Python (например, к методам списков, словарей).
Библиотека собеса по Python
— Обычным функциям, определенным с помощью def.
— Методам классов.
— Статическим методам и методам класса внутри классов.
— Lambda функциям.
— Методам встроенных типов в Python (например, к методам списков, словарей).
Библиотека собеса по Python
👍2❤1