CONTEXT MANAGERS In Python Are GENIUS!
Vložit
- čas přidán 26. 10. 2022
- 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:
www.indently.io
▶ Follow me on Instagram:
/ indentlyreels
Thank you so much for this informative stuff.
Thanks, i have been thinking about writing my own context manager, but don't have the time to check the docs.
Thanks.
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.
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()
A good explanation, thank you
You are the man!!
Greatly explained.
Any chance of an extra one on this showing operation of "async with"?
That‘s another way of wrapping
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? 😆
python programmer can't find curly brackets 😂
i wish we used curlies instead of indentation icl ;_;
How do you implement __ENTER__ and __EXIT__ at the method level not class level?
❓
As a static class method? You don't.
Thanks for the explanation! However, 'open' is a function rather than a class, so how does that work actually behins the scenes?
Obviously it returns an object that has the enter and exit Dunder methods. Probably a FILE object...
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?
for me the same, does not show __enter__ and __exit__
he's using an IDE.looks like Intellij Idea, maybe? not sure
What font do you use?
I think it's called Jetbrains Mono
Which app are you using
I guess you mean the IDE he is using? It's PyCharm.
Thank you so much for explaining context managers in Python 👍!
likes = 63 😉😉
What's the code editor name?
PyCharm
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
Is there a discord channel