4. Decomposition, Abstraction, and Functions
MIT 6.0001 Introduction to Computer Science and Programming in Python, Fall 2016
View the complete course: ocw.mit.edu/6-0001F16
Instructor: Dr. Ana Bell
In this lecture, Dr. Bell discusses program structuring, functions, specifications, scoping, and the difference between the "return" and "print" keywords in Python.
License: Creative Commons BY-NC-SA
More information at ocw.mit.edu/terms
More courses at ocw.mit.edu
Пікірлер: 154
Jealous of MIT students who can have such an awesome teacher; Thankful to MIT who's willing to share these awesome lectures.
@iitasperiant6102
Жыл бұрын
Help bro please 🥺
Thanks MIT for providing equal opportunity for poor people like me. I am grateful to these wonderful courses. Will try to see everything till i die....
@SZ-hg5fd
6 жыл бұрын
I immigrated from China to Canada, as you know there’s no KZread in China, so I am lucky to have such an opportunity to watch MIT courses. I am grateful to all of these!
@jason-ps6mf
5 жыл бұрын
I am a Chinese from a poor village using shadowsocks to watch this awesome video
@kattetivikram1862
5 жыл бұрын
Iam indian it is very useful to me .Iam computer science students in india
@MultiDexter92
4 жыл бұрын
Americans, where are you?
@jonathanhansen4282
4 жыл бұрын
@@MultiDexter92 Im at a top 15 Uni and am still here....
Wow, this instructor is excellent. She does a great job of comparing what you are coding to simple concepts. I am always let down when an instrucor is really intelligent but makes the material unnecesarilly convoluded to the point you woulld only be able to understand it with advanced knowledge of the subject.
@jakeambrose4294
6 жыл бұрын
if u plan to keep learning it and like to network with other people who are also find me messaging my facebook page knowledge obsession if trading info and sources and solving problems with others interests u
@tonyravindran
4 жыл бұрын
actually in the regular course the reading material and and the slides are shared beforehand for the students to prepare themselves for the lecture but we have to jump straight into the lecture
This is honestly the best explanation of functions in python. Global and local differences are also extremely clear. Great job!
0:02:30 How do we write code 0:04:15 Abstraction and Decomposition 0:06:09 Abstraction example 0:08:00 Decomposition 0:09:14 Abstraction 0:10:06 Functions 0:11:37 How to write and call/invoke a function 0:14:43 In the function body 0:15:45 Variable scope 0:18:25 Variable scope example01 0:21:09 One warning if no return statement 0:22:00 0:24:00 0:26:25 Functions as arguments 0:28:00 0:30:00 0:30:57 Variable scope examples 0:34:18 (Link description : Some more Variable scope example) 0:35:44 Variable scope example 0:36:21 Variable scope example global scope 0:37:41 Variable scope example call h() 0:38:45 Variable scope example return to g() scope 0:39:41 Variable scope example return to global scope
@diogos3475
3 жыл бұрын
Real Heroes don't wear capes
@petor95
3 жыл бұрын
Thank you 🙏🏾
@Billyxiao
2 жыл бұрын
Amazing
Thank You, Dr. Ana Bell . It was a nice explanation of the SCOPE.
Thanks a bunch Dr. Bell
The scope part is clear and easy to understand, thanks!
THIS VIDEO IS PYTHON MADE EASY, THANK YOU, ANA.
thank you so much for your illustrations Dr. Ana. Very very useful.
Thanks, MIT for give us this opportunity
thank you ,mit
If only at my university the programming was teched like that... Idk, if it's just me, but how important the teacher in the teaching process. At my university, the lectures were boring, students were not involved in the process, and in the end, I started hating the programming classes. Now I can see how beautiful and interesting they could be
@user-nm9fk7cb4b
3 жыл бұрын
This is only interesting to me because in my own time over the course of years I’ve been putting pieces together of functions within functions that leads to spontaneous, recursive creative syntax Don’t blame your teachers, if you’re bored THEN YOU’RE THE BORING ONE. That also means you know why you’re bored, so you can change it
The way she explained about the scope of variables is awesome...
Thanks a lot Dr. Ana Bell
she is So Kind during Explaining and thanks for that Ana 😀 Greetings from #Morocco .
tnx MIT for make these courses public
a nice lecture. Thanks!
Me doing problem set 1: "Man its gonna take me a long time to be able to afford a house"
Best explanation of abstraction and decoMposition!!!!!
8:00 modules. Create it once, debug it once and use it many times for different projects or in your code with different inputs.
Thank you for such clear explanation :)
best function lecture ever.
Thanks Mam For Upload On U-Tube so That I am able to listen this.
great job
Great. Thank you.
Brilliant!
can anyone tell me how she just comments out a hole block of code without doing the """ thing? That would be such a great help. Thanks
@mitocw
Жыл бұрын
In IDLE, use ctrl + D to comment out many lines of code.
Thank you
im lost but im just going to keep watching.
@pocok5000
6 жыл бұрын
I'm not sure that's a good idea. Watch again until you understand. Then you can understand the rest easier.
@LordAhmedAmr
6 жыл бұрын
I hope you didn't lose interest by now and that you started to wrap your head around things. if not though i would recommend watching the CS50 course from harverd it's way much easier yet very useful.
@rysknet
5 жыл бұрын
Re-watch if lost. I have to rewind tough parts a couple of times until I get it. No shame in that.
@idontknow-ms8mc
5 жыл бұрын
Udacity's Intro to Computer Science course is pretty good, as well and goes over concepts very simply. There is also a version of this course on Edx.org.
@MrFaiqueShakil
4 жыл бұрын
@@idontknow-ms8mc It is more complex than this.
It's awesome.
Thanks MIT
Thank you MIT for feeling in the gaps :)
@atlantic_love
Жыл бұрын
I see what you did there lol. Get back to programming :D
Thank you.
تحياتي للعميد بامطرف
35:40 Scope Details. I think it's helpful to just look at it line by line. At first I got confused with x = x + 1 because it seemed to be inside def h(), but it's actually inside def g(x). def h() is such a simple block of code, that it threw me off at first. Assign x to 3 +1. print the string 'g:x=' , h() assigns x to 'abc', but returns None. So the string, abc, stays within that scope. Calling the function, h() ,returns None. return x is typed "after" print(x) in the order. Brain slowly absorbing. def g(x): def h(): x = 'abc' x = x + 1 print('g: x =', x) h() return x x = 3 z = g(x)
@henrikmanukyan3152
7 ай бұрын
where does h() take its "x" variable if it has neither defined nor had that argument in its definition? is this the case of using global variables that is not recommended?
Oh man, missed a good opp to have a func_e. Regardless, loving this content. Makes me miss college 😭
@algemmegla9002
3 жыл бұрын
ha ha. Took me a minute.
@alham9656
2 жыл бұрын
@@theerdalavignesh4443 funky
4:00 functions: decomposition and abstraction
Python tutor is awesome .......
@sd-xk7qr
3 жыл бұрын
It's great. The only problem sometimes is that it stops at 1000 steps
Nice! i will come to US in few years!
@x15cyberrush9
5 жыл бұрын
@@mzaje9803 who r you to say that? don't underestimate india ns and Chinese
so, x = 3 def f(y): print(x) works but def g(y): x =+ 1 does not work. because it's not in the functions scope. so are only operations with a variable out of scope not possible? because in either case it has to know the value of x, whether you print it or whether you do something with it. so why does the second one not work?
39:49 If the function h() had a return at the end, would the outer function have returned x as 'abc' instead of 4?
@JeetSingh-kp5xq
4 жыл бұрын
only if we assign the return of h() to x like x= h(). Otherwise 4
The last example about nesting would have been better if you had written h as function of other thing that would have added to x and participate in the main function. BTW it was really a good pedagogical video.
34:00 what is the difference between incrementing x and printing x? it is defined in the same place relative to g() and h()
@as-br9ov
2 жыл бұрын
When you are trying to print it, func g is able to track down x into the global scope and get it. Yet, if you want to convert it into something, in other words if you want to implement process onto x, you have to define it first in whatever scope you are. Then you can modify it.
why did it print with return and without return twice?
informative
Iam mca student in india.it has very useful to me
So when h returns, h in the scope of g still equals 'some code' and None is just sort of floating about in the scope of g. But when g returns, the value 4 is assigned to z because of the equals sign in the code. Is that right ? And if that's right, that means the None in the scope of g was inaccessible. Just trying to get it clear.
11:53 How you write a function. Parts of a function
when func_a( ) is mapped to z ... then can we write return z instead of return z( ) ?
@nikhilkolhe2374
2 жыл бұрын
no if you do that you are returning the object func_a. but when you return z(), you are returning the value of expression func_a(), which is the value returned by func_a.
21:50 (regarding the section on return and None) When describing remainder = i % 2, it might be easier for beginners to say: i "modulus" 2, instead of i "percent" 2. Overall, the videos are excellent. Thank you! :D
The title of this lecture should be "funception"
@ziadanwar5296
3 жыл бұрын
I came down searching for that comment Lmao
In the last example, where x is not defined in function g(x) should be giving an error (UnboundLocalError: local variable 'x' referenced before assignment ), isn't it? Like how the example shown in 32:42
@nikhilkolhe2374
2 жыл бұрын
x is the formal parameter, so it well be assigned to the value of actual parameter at function call. So we should not get an error
I LLLLOOOOVVVEEE YOUUUUUUUUUUUU
25:00 example of a function "is even"
10:00 recap functions
if suppose the function h() in the last example is called twice, does the "scope" remain or is it formed twice? pls help
@rootytuners
4 жыл бұрын
It is a fresh scope on each call.
What's the shortcut for deleting the hash # from each line at once, like Professor Ana bell does regularly in Spyder IDE.
@maheraberu2000
3 жыл бұрын
strg+1
Hello class!
What a coincidence , it's also raining In my city Hyderabad Pakistan due to a cyclone.
The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To make a donation or view additional materials from hundreds of MIT courses, visit MIT OpenCourseWare at ocw.mit.edu
*My takeaways:* Function specification/docstring 13:00
Which lecture is required to do pset2?
@andreymlv
3 жыл бұрын
ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/syllabus/
Well i don't know why but at 27:34 when i pass the same code in my spyder it says "unexpected EOF while parsing"
@rootytuners
4 жыл бұрын
You’ve probably omitted a closing quote or bracket somewhere.
Can anyone ELI5 what it means to provide abstraction? She says that writing the docstring provides abstraction and I'm just not familiar with that meaning.
@saurabh75prakash
6 жыл бұрын
E Dogg , Abstraction means that you need not look into the details of the function to use it( remember the projector example). The docstring provides the high level idea about the function which can help you in reusing the function in your code (without looking into the details of function's code)
Is it just me or is the scope structure in python eerily reminiscent of the way tangent universes are described in Donnie Darko (director’s cut)? 🤔🤔 just a thought!
Is it bad style to use a variable from outside the scope of a function?
@pricesmith8450
6 жыл бұрын
nvm.. yes.
@ayandamarotya9607
6 жыл бұрын
depends on the assignment preference of that variable you will be using... only assign global variables when you will access them from more than one function...
How come the instructor can remove the comments from the code in one go? What is the command to do it?
@sebastiangutierrez9650
4 жыл бұрын
highlight the comments and then do ctrl+1
@kushagrakanungo9517
4 жыл бұрын
@@sebastiangutierrez9650 Thank you so much.
Lol even at MIT the students begin packing up before the professor is done teaching
@woddlyoats
6 ай бұрын
It's sad
when you print(function_name) it just prints out what the function returns?
@leboyoyo
5 жыл бұрын
Liaomiao yes
@rootytuners
4 жыл бұрын
@Liaomiao - actually no. print(function_name) will print the function object in memory; something like: . print(function_name()) with the parentheses will print what the function returns.
Assignment: Hangman github.com/egeonatdoguslu/MIT-Assignments/blob/Hangman/Hangman
@pricesmith8450
6 жыл бұрын
got any of the other assignments? would love to compare some of mine
26:03 in python everything is an object
why we are didn't use x ='abc' on any where ???
@andredc161
6 жыл бұрын
because it never was used has a print(x) inside the function h(), and doesn´t has a return. So it returns None
Where do I get the python tutor ?
@estherweyinmikoloh7182
5 жыл бұрын
pythontutor.com
Based
real lecture starts at 11:00
im 12 and i dont understand what is func, help...
Great lecture. Anyone has the solution for the assignment? Thanks very much!
34:34
19:23 when you hit a function call
She wears the same outfit for every lecture. Just an observation, not a criticism. It's a nice outfit that strikes the perfect balance, I can see why she settled on this look in particular.
29:03 "so z is func_c" should have been "so z is func_a"
I love the fact that American students are pretty confident to claim that they can make projectors using given components after the professor asked about it. In my country and in UK, nobody wants to look smart even though they are able to do the same.
Whoever edited this open courses must didn’t want to leak the major part of MIT’s succeed in education.
Does anyone know how she deletes all the # character at once?
@DaljitSingh-ei9re
4 жыл бұрын
'Ctrl' + '/'
Pam beesly
🦾🤠🇺🇲
i didnt use it my mom did
I was okay until you got to the last example. Totally lost you :P I'll keep watching it until i get it. Thanks for posting
@sridharr8306
6 жыл бұрын
Try to do that bit by yourself, using python tutor. It will be clear
IM 11 AND MY DAD IS EXPECTING ME TO UNDERSTAND THESE VIDEOS. I CAN'T UNDERSTAND ONE BIT< SO MY DAD IS GETTING REALLY MAD AT ME. CAN U PLEASE MAKE SOME VIDEOS THAT I MAY UNDERSTAND
@mitocw
4 жыл бұрын
We recommend you try the materials through the Edx course. It just started today! It has a place to get help and ask questions. www.edx.org/course/introduction-to-computer-science-and-programming-7. Also, if this course is still confusing try another resource/course. There are many available. Another view can help. Also, if English is not your native language, try a course that is in your language. Best wishes on your studies!
@woddlyoats
6 ай бұрын
If your dad is getting mad then he is a really pathetic person.
any one here solved the 'hangman' assignment
@EgeOnatDoguslu
6 жыл бұрын
github.com/egeonatdoguslu/MIT-Assignments/blob/Hangman/Hangman
Why is the teacher always in the same outfit?Curious.
@woddlyoats
6 ай бұрын
It's her look
These cameramen really suck at focusing on the slides. I don't need to see her face while she's explaining the slides. These videos are hard to watch and take notes on 2x speed.
Clickbait