Programming Terms: Closures - How to Use Them and Why They Are Useful
HTML-код
- Опубликовано: 7 мар 2016
- In this programming terms video, we will be looking at the term "Closure". We will learn what a closure is and why they are useful. We will look at examples in both Python and JavaScript. In Python, understanding closures helps us understand common language features like decorators. And in JavaScript, closures will allow us to better understand callback functions and much more. Let's get started...
The code from this video can be found at:
github.com/CoreyMSchafer/code...
✅ Support My Channel Through Patreon:
/ coreyms
✅ Become a Channel Member:
/ @coreyms
✅ One-Time Contribution Through PayPal:
goo.gl/649HFY
✅ Cryptocurrency Donations:
Bitcoin Wallet - 3MPH8oY2EAgbLVy7RBMinwcBntggi7qeG3
Ethereum Wallet - 0x151649418616068fB46C3598083817101d3bCD33
Litecoin Wallet - MPvEBY5fxGkmPQgocfJbxP6EmTo5UUXMot
✅ Corey's Public Amazon Wishlist
a.co/inIyro1
✅ Equipment I Use and Books I Recommend:
www.amazon.com/shop/coreyschafer
▶️ You Can Find Me On:
My Website - coreyms.com/
My Second Channel - / coreymschafer
Facebook - / coreymschafer
Twitter - / coreymschafer
Instagram - / coreymschafer
"Therefore, in simple terms: A closure is an inner function that remembers and has access to variables in the local scope in which it was created even after the outer function has finished executing"... It is absolutely impossible for this guy not to make heaven
He is a fantastic teacher no doubt 👌🏽
No one knows how to teach a complicated topic better than him
no it's not
You got it fam
@@treyheaney9483 Why? Could you please explain?
okay, let's watch the decorators video at last. You rock, Corey.
i dont think people say this enough, but your channel is probably one of the most valuable programming tutorial channels in YT. i keep learning from this channel and i all i can give is my appreciation.
thank you.
true, i felt the same! great help!
"My hope here is that, by seeing this in two different languages, it will really knock home the concept, rather than just the syntax of the language". Absolute brilliance!
So, if I got it right, closures are when a function remembers the environment it was created it, specifically the variables around it.
Yes, that is a good concise description.
Thanks you just nailed it 😇
You nailed it almost 3 years ago😂
Looks like normal human childrens behaviour to remember which city 🏙️ born
Some clarify me with another example - So that I will get it 100% please....
Best (Python) teacher who explain concepts easily and clear. As a beginner programmer, I read and study Python concepts in books and jupyter notebook samples. But, for certain concepts, I need additional visual explanations and Corey's videos always help me out greatly! In eBooks, I always highlight important concepts with a note link to his RUclips video to revisit the videos later.
Man, I tried to learn Closures last year and failed miserably. Today I gave it another try(this time with ur video) and now I totally get it. Thank you very much man. God Bless!!!
Thanks very much. This is the only video explaining Closures the way it should be.... very clear and easy to understand! U r truly awesome!
Video on "First Class Functions" is the base. Once you clear that idea, understanding closure becomes much easier... Corey you are genuine and genius teacher, a teacher everyone deserves to have at least once in their life.
Completely forgot these from my classes; this video helped me remember and learn it way more in depth! Thank you
Thank you! After all these years, I feel like I am finally starting to understand Closures. Awesome!
You are the only person who can make me understand Python!!! Your excellent methodology of making the concepts clear and those top notch examples gives a break through to any person willing to learn the language. Thank you a lott!! God bless you
I have no words to thank you because this was a very tricky concept that I was trying to learn for last 2 days in dart and your video make me able to understand what exactly closure does, thank you so much
Never mind first class functions. This was a first class explanation. You closed off my confusion nicely. :)
When I'm coding in Python and come across with something I don't know or I don't remember quite well I come back to your videos. So clear and insightful at the same time!
Corey's videos are always excellent - his explanations are clear and he makes complex topics very accessible. Thank you!
4:36 That's what a close it. I am yet to complete watching video. But just the way you put forward these concepts, always keeps me going through your videos. Thank you sir.
Great video! I really liked the examples you used. They really helped to demonstrate actual use cases for closures. I am looking forward to the python decorator tutorial
I get it finally, a closure is a inner function that has access to variables within the local scope even after the outer function has finish executing.
Thanks a lot and keep up the good work!
Another great video. This was one of the hardest subjects for me and I understood it very well. Thank you Corey.
I absolutely love it that you demonstrate the concept in two different languages
after a few RUclips vids and reading a couple of Python books, i finally found someone who explains Closures and Decorators to a level that helps me to completely understand them and their uses. thanks for your efforts Corey
I am here from the *Decorators!*
lol! me too 😂
Me too!
I like the way you explain complex topics in a easy way.
Hey Corey, recently stumbled on your videos and I'm so happy I did, thanks for taking the time to make such great tutorial videos!
Also, for those with slower auditory processing like me, set the playback to 0.75 speed, it is perfect!
Excellent video, Corey. Explanation is concise and the code snippets effectively demonstrate the the concepts of closures.
Wow man, the teaching skills that you possess is unmatchable
Thank you for this explanation! Great approach in making the video language agnostic. I came across this topic in studying Dart with Flutter where closures and anonymous functions are used frequently and this made things clear.
Man, thank you! Googled everywhere with no luck and finally found you and understood closures ;)
Very helpful concretization of a pretty abstract term, thanks!
Another great video. Though a complicated topic. I understand how they work from your examples, but I'd like to know more about when and why we would need to use these. It's one thing to understand how these things work technically, but its another leap in understanding to know when and why to use a certain approach to solve a problem.
Those are 3 great examples. And I like your explanation where you say that a closure encloses the outer free variables inside the inner function (paraphrasing).
Thank you for making these wonderful videos! They're really helpful when I tried to understand these concepts!
Amazing explanation. Having read and seen other explanations, can vouch for this one as being the one that I found understandable.
I really like the way you represent all those things in very easy manner
free variable is the variable that is not defined within the inner function but is defined in the enclosing function. It can still be accessed in the enclosed function.
"A closure is an inner function that remembers and have memory of the variables from the local scope from which it was created created (this includes arguments passed to the parent function)- even after the outer function has finished executing"- 4:50
A closure closes over the free variables from their environment- defined outside of the function/
dude this is actually crazy how easy it gets when you understand it
Thank you.
Really great video man. Helped it click for me with deeper understanding where other videos couldn’t. Thanks!
Good job! Simple and precise ... Thanks!
I spent the entire day trying to figure out what closure and failed miserably, and then this guys clears it up in 5 minutes. Great job, man, thank you a lot.
I have recommended your channel to a lot of my colleagues over the years
Thanks Corey. Nobody can explain this the way you do.
Great video, well explained with good examples. :)
I really like this example...thank you very much
You are the best, I have been following your channel for years, and I always come back to your videos.
Wow. Couldn't understand better than after watching this great video!
Your videos are fantastic, thanks a lot.
Very useful ! I love your videos I learn so fast! :) thank you for making this golden content you provide :)
Thanks, very good explanation!
Awesome tutorials. The greatest Python teacher i must say
Outstanding! Thank you so much!
Really nice video. Very well explained.
well explained and easy to understand for beginners
Brilliant selection of examples, you made me understand! Now I feel I am evolved!
Superb Video sir .. Thanks for explaining the wiki's definition with an example .. Really helped me :)
super cool video, finally understood closures :)
Thank you for the video. I am grateful for your time and contribution. Kind regards, Akira.
Your explanations and video quality are top notch
Amazing Explanation bro
cheers mate, helped out a lot
Great video. Thanks a lot from Argentina.
Thank you! You are a great teacher!
Thanks so much for your efforts
The way I prefer to remember this concept:
The outer function "closes over" an inner function, therefore it's a closure. While doing so, it "injects" its local scope into the function being closed. So the function that is returned will be executed with the injected state every time it is called.
Top Video,really focuses on understanding.
You are the best teacher I've seen
one of the best videos on closures. CLEAN and CONSICE. keep up the good work +Corey Schafer (y)
I have one request, can you do a video on "Variable bindings (early vs late binding) in python" Thanks!
Thnx dude. This is all I needed to understand it
Thanks a lot, man! Very useful.
Another great video! Thanks again.
All My interview for The MNC interviewer ask what is closure i explained all as i remembers and finally i am all in previous year. Even Interviewer Knows About You Corey and we discuss how awesome your videos are ...:-) Currently working there have been 1 year and in core development team thanks corey again.
Thanks for your effort
Thanks was very very helpful.
Hi Corey, I really like your videos. You explain everything in a very elaborated manner and that too with practical examples which helps in getting deeper insights and developing intuition.Keep the good work up.
Also, Please upload more videos of Bronx, haven't seen his new videos.PS-> his expression in running late video still makes me smile( I've watched it multiple times). :-) :-)
Haha, will do!
thanks well explained brother
Enjoyed it, thanks.
Thanks for another great video that explains the mechanics, not just syntax. What I would like to understand better: What are real world use cases in which to use closures. Or in other words: In my problem solving efforts before writing code, what are patterns that call for closures.
Every video, got to watch another video. This is an endless while loop
Good as always. Thanks.
This video made it click, thank you!
great explanation thanks you
Brilliant! It finally starts to make sense, what closures actually are :) Thank you, for a very pleasant and informative video.
Thank you!
The amount of function passing in the last example was nuts haha.
it took me writing the code out and writing my own comments plus reading out loud to fully follow the logic here.
so if I understand it correctly - add_logger = logger(add) takes the add function (NOT EXECUTED) as a parameter to the logger function (which also just passed the function without executing it). Since the logger function was called using the brackets "()" it was executed and returned the inner function (log_func) because of the return log_func at the end of the logger function. But because of closures it remembered that you passed in the add function. So when you executed add_logger(3, 3) it passed the add function into the log_func and executed the add function with the supplied arguments within the print function.
just wow - that is a brain twister.
awesome stuff... thanks dude
Good stuff!
Hi Mr. Corey, Please make videos for data structures and algorithms using Python. Its hard finding tutorials for DSA in python. I believe i can understand the concepts easily if you teach the DSA.
Great explainer
Such a helpful video! Here's a heuristic I used to help understand why we need to set my_func = outer_func() in order to execute the inner function instead of just calling outer_func().
outer_func() (in the second example where we return inner_func instead of inner_func()) returns, but does not execute a function. If you want to execute it, you might want to call outer_func()() but that syntax is illegal, so we set outer_func() to the variable name my_func so we can call my_func() with just one set of parentheses. Thinking of an illegal function with double parentheses and re-writing it using legal syntax helps me conceptualize why we use my_func.
Great video :)
thank you! thank you!
Extremely well-explained tutorial, but I still can't figure out why I would ever want to use this..
His last example with the logging is a good example, though as he says, decorator would be the more pythonic way (although it's still using a closure as well). The way that he's using the logging wrapped around the other two functions, add and subtract, show how you can apply logging to any arbitrary function in your application without having to replicate all of the logging machinery in every function. It makes your code way more compact and also far more maintainable.
beautiful!!
My Savior...Thaaanks so much for this simplicity...
Awesome!
Excellent
I owe you so much as I learnt most of my python from you.
I just got confused between firstclass function videos and closure video.
Just to confirm,
Do you mean if I assign function to variable like you did in first video. It means first class function.
whereas if you function takes function as argument but returns function with parenthesis which can be executed later and it remembers the value of variable than its called higher order function.
and closure is where you take function as argument to other function which returns some inner function.
Please pardon me if I sound stupid here... :)
no one can explain like him
Thank you for all the series you have you are such a great teacher! I do have one question on this video. The last example when you are doing the logger example withing the file you create with the example it looks as so:
INFO:root:Running "add" with arguments (3,3)
ok so I understand From running on but INFO:root where is that coming from and what is the significance of them?
Hi Corey, Thanks for the great video.
I've a qiuck question, how to call them, if there are two or more inner functions?