Почему для состояния текущего запроса в асинхронном Python-коде используют ContextVar, а не локальную переменную потока?
База Hintsage
Функции и декораторы
Замыкания, decorators, callable-объекты и управление контекстом.
Практика
Вопросы: Функции и декораторы
От чего зависит, сможет ли contextlib.suppress подавить ошибку при входе другого контекстного менеджера в составном with?
При таком использовании @contextmanager какое исключение покинет with и почему тело блока не выполнится?
from contextlib import contextmanager
@contextmanager
def resource():
raise OSError("не удалось открыть ресурс")
yield "ресурс"
with resource() as value:
print(value)
Можно ли единообразно использовать with, когда ресурс иногда уже создан, с помощью nullcontext?
Представьте, что исключение перехватывается внутри тела with. Какие значения получит __exit__ в этом случае?
class Logger:
def __enter__(self):
print("enter")
return self
def __exit__(self, exc_type, exc, tb):
print(exc_type, exc)
return False
with Logger():
try:
raise ValueError("ошибка")
except ValueError:
print("handled")
Если аргумент фабрики декоратора зависит от текущего состояния программы, когда это состояние фиксируется относительно вызовов декорированной функции?
Из-за чего чтение переменной во вложенной функции до присваивания ей в той же функции вызывает UnboundLocalError, даже если снаружи такая переменная уже существует?
Допустим, декоратор задаёт собственный атрибут обёртки до применения functools.wraps. Каким станет этот атрибут после применения wraps?
Вам передали один экземпляр контекстного менеджера для вложенных блоков with: какое свойство его реализации определит, не испортит ли внутреннее состояние внешний выход?
Опишите судьбу return, выполненного внутри блока with.
После успешного __enter__ присваивание результата в as завершается ошибкой: будет ли вызван __exit__?
Вызываемый объект хранится атрибутом класса и реализует __get__: почему обращение к нему через экземпляр может автоматически добавить экземпляр в вызов?
Сколько раз генераторный контекстный менеджер должен передать управление через yield за один вход в with?
При декорировании функции с именованными аргументами обёртка принимает только позиционные аргументы: какое изменение контракта получает декорированная функция?
Какой объект в итоге связывается с именем класса после применения декоратора класса?
В фабрике замыканий две внутренние функции изменяют одну переменную: почему вызов одной может изменить результат другой?
Разберите последствие: что нарушит декоратор, если он перехватывает BaseException вместо Exception и возвращает запасное значение?
В чём подвох декоратора, который пытается поймать исключение генераторной функции вокруг её вызова?
Что проверяет callable(obj) и гарантирует ли значение True успешный вызов объекта?
Как декоратор, возвращающий дескриптор, узнаёт имя атрибута, под которым он установлен в классе?
Показано 1–20 из 50