Требуется ли использовать yield в контекстном менеджере в Python
Python
Middle
Aston
Требуется ли использовать yield в контекстном менеджере в Python
Ответы
Нет, `yield` не требуется в контекстном менеджере, но его можно использовать для создания контекстного менеджера с помощью `contextlib.contextmanager`.
**Пример без yield (классический способ):**
```
class MyContext:
def __enter__(self):
print("Entering context")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting context")
with MyContext() as ctx:
print("Inside context")
```
**Пример с yield (через `contextmanager`):**
```
from contextlib import contextmanager
@contextmanager
def my_context():
print("Entering context")
yield
print("Exiting context")
with my_context():
print("Inside context")
```
Оба варианта работают, но `yield` упрощает создание контекстных менеджеров для простых случаев.