CONTEXT MANAGERS In Python Are GENIUS!

preview_player
Показать описание
What are context managers in Python? How can they give us more flexibility in our code? Let's find out together in this lesson!

▶ Become job-ready with Python:

▶ Follow me on Instagram:
Рекомендации по теме
Комментарии
Автор

Really useful stuff. Thank you! I immediately implemented it in my database class.

sdmagic
Автор

You can also use the @contextmanager decorator:

from contextlib import contextmanager

class File:
def __init__(self, path: str, mode: str):
self.path = path
self.mode = mode
self.is_open = True
def do_something(self):
if self.is_open:
print(f"Hi! This is a file. Its path is '{self.path}' and its mode is '{self.mode}'")
return
raise ValueError("this file is closed")
def close(self):
self.is_open = False

@contextmanager
def open_file(path: str, mode: str = "r"):
file = File(path, mode)
yield file
file.close()

with open_file(r"myfile.txt") as f:
f.do_something()

ntlake
Автор

I think it is a perfect feature. It may be useful for opening a video in OpenCV. Because I generally forget to close the video stream.

enesguler
Автор

Thanks, i have been thinking about writing my own context manager, but don't have the time to check the docs.

Thanks.

daviddanielng
Автор

Thank you so much for this informative stuff.

wiseskeshom
Автор

In a most cases it is easier to achieve with contextmanager decorator from contextlib:

@contextmanager
def open(name: str):
print(f'opening file: {name!r}')
yield 'return value'
print(f('closing file: {name!r}') # exit block

grzegorzryznar
Автор

What gets called if you just fall out of the with block without an exception? Is there a "__else__" to make it consistent with loops? 😆

rantalbott
Автор

python programmer can't find curly brackets 😂

teksimian
Автор

Any chance of an extra one on this showing operation of "async with"?

ConstantlyDamaged
Автор

2:04 how did you get that entire line of text to appear automatically? "def __exit__(self, exc_type, exc_val, exc_tb):"
Is it possible to do this in VS Code?

RedShipsofSpainAgain
Автор

How do you implement __ENTER__ and __EXIT__ at the method level not class level?

wellygeek
Автор

Thanks for the explanation! However, 'open' is a function rather than a class, so how does that work actually behins the scenes?

tamirshalev
Автор

Thank you so much for explaining context managers in Python 👍!
likes = 63 😉😉

dcknature
welcome to shbcf.ru