Разберите последствие: что станет с именем функции, если декоратор вернёт невызываемый объект?
База Hintsage
Программирование Python
Язык Python и его модель данных.
Темы раздела
Выберите подраздел
- 0 вопросов
Общие вопросы
Смешанные вопросы по Python.
Открыть раздел - 50 вопросов
Python Core
Типы, области видимости, функции, модули и базовая семантика.
Открыть раздел - 50 вопросов
Модель данных
Протоколы объектов, dunder-методы, дескрипторы и классы.
Открыть раздел - 48 вопросов
Коллекции и итераторы
Коллекции, comprehensions, iterators и generators.
Открыть раздел - 50 вопросов
Функции и декораторы
Замыкания, decorators, callable-объекты и управление контекстом.
Открыть раздел - 50 вопросов
Конкурентность и asyncio
Threads, processes, GIL, coroutines и asyncio.
Открыть раздел - 50 вопросов
Память и производительность
Управление памятью, профилирование и оптимизация Python.
Открыть раздел - 50 вопросов
Тестирование
pytest, fixtures, mocks и организация тестов.
Открыть раздел
Практика
Вопросы: Программирование Python
Когда для управления ресурсами нужен ExitStack вместо обычного with?
Сравните два способа декорирования свойства: какой вариант завершится ошибкой при обращении к User().name и почему?
def audit(fn):
def wrapper(*args):
print("audit")
return fn(*args)
return wrapper
class User:
@audit
@property
def name(self):
return "Ada"
print(User().name)
В блоке with контекстный менеджер возвращает из enter не себя: что получит переменная после as?
Для обработчика, который передаётся в multiprocessing, почему замыкание может оказаться непригодным, тогда как экземпляр вызываемого класса часто подходит?
Зачем декоратору с параметрами нужен дополнительный уровень вызова?
Разберите ситуацию: какие методы контекстных менеджеров будут вызваны, если второй менеджер не смог войти в составной блок with?
class M:
def __init__(self, name, fail=False):
self.name, self.fail = name, fail
def __enter__(self):
print("enter", self.name)
if self.fail:
raise RuntimeError(self.name)
return self
def __exit__(self, *exc):
print("exit", self.name)
return False
with M("A") as a, M("B", True) as b:
print("body")
Объясните механизм: как замыкание сохраняет изменяемое состояние между вызовами внутренней функции через nonlocal?
Что произойдёт при вызове экземпляра, если __call__ задан только как атрибут этого экземпляра, но не определён в его классе?
Объясните, как генераторный контекстный менеджер обрабатывает исключение, возникшее внутри блока with.
Какой риск возникает, если один экземпляр контекстного менеджера используется как декоратор рекурсивной функции?
В практической ситуации декоратор заменяет метод вызываемым объектом: почему вызов через экземпляр может потерять автоматическую передачу self?
Какое значение должен вернуть метод выхода контекстного менеджера, чтобы исключение из блока with не покинуло этот блок?
Представьте функцию с двумя декораторами: какой декоратор фактически вызывается первым?
Зачем обёртке декоратора нужен атрибут __wrapped__?
При создании функций в цикле какое значение они используют при последующем вызове — текущее или сохранённое на итерации?
На каком этапе Python применяет декоратор к функции: при её определении или при вызове?
Как объект, переданный в конструкцию with, участвует в освобождении ресурса при выходе из блока?
В каком случае для декоратора с состоянием предпочтительнее вызываемый объект, а не замыкание?
Что именно удерживает замыкание после завершения внешней функции?
Показано 181–200 из 348