Опишите судьбу return, выполненного внутри блока with.
База Hintsage
Функции и декораторы
Замыкания, decorators, callable-объекты и управление контекстом.
Практика
Вопросы: Функции и декораторы
Вам передали один экземпляр контекстного менеджера для вложенных блоков with: какое свойство его реализации определит, не испортит ли внутреннее состояние внешний выход?
Допустим, декоратор задаёт собственный атрибут обёртки до применения functools.wraps. Каким станет этот атрибут после применения wraps?
Из-за чего чтение переменной во вложенной функции до присваивания ей в той же функции вызывает UnboundLocalError, даже если снаружи такая переменная уже существует?
Если аргумент фабрики декоратора зависит от текущего состояния программы, когда это состояние фиксируется относительно вызовов декорированной функции?
Представьте, что исключение перехватывается внутри тела 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")
Можно ли единообразно использовать with, когда ресурс иногда уже создан, с помощью nullcontext?
При таком использовании @contextmanager какое исключение покинет with и почему тело блока не выполнится?
from contextlib import contextmanager
@contextmanager
def resource():
raise OSError("не удалось открыть ресурс")
yield "ресурс"
with resource() as value:
print(value)
От чего зависит, сможет ли contextlib.suppress подавить ошибку при входе другого контекстного менеджера в составном with?
Почему для состояния текущего запроса в асинхронном Python-коде используют ContextVar, а не локальную переменную потока?
Показано 41–50 из 50