4. Decomposition, Abstraction, and Functions

Поділитися
Вставка
  • Опубліковано 15 чер 2024
  • 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

  • @vi3524
    @vi3524 4 роки тому +112

    Jealous of MIT students who can have such an awesome teacher; Thankful to MIT who's willing to share these awesome lectures.

  • @SK-qy5nz
    @SK-qy5nz 6 років тому +207

    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
      @SZ-hg5fd 6 років тому +14

      I immigrated from China to Canada, as you know there’s no UA-cam in China, so I am lucky to have such an opportunity to watch MIT courses. I am grateful to all of these!

    • @jason-ps6mf
      @jason-ps6mf 5 років тому +19

      I am a Chinese from a poor village using shadowsocks to watch this awesome video

    • @kattetivikram1862
      @kattetivikram1862 5 років тому +10

      Iam indian it is very useful to me .Iam computer science students in india

    • @MultiDexter92
      @MultiDexter92 4 роки тому +1

      Americans, where are you?

    • @jonathanhansen4282
      @jonathanhansen4282 4 роки тому +3

      @@MultiDexter92 Im at a top 15 Uni and am still here....

  • @jonahcornish6160
    @jonahcornish6160 7 років тому +84

    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
      @jakeambrose4294 7 років тому +1

      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
      @tonyravindran 4 роки тому +2

      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

  • @aaronisinjapan
    @aaronisinjapan 5 років тому +16

    This is honestly the best explanation of functions in python. Global and local differences are also extremely clear. Great job!

  • @user-fl7vs4ed6l
    @user-fl7vs4ed6l 3 роки тому +54

    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
      @diogos3475 3 роки тому +4

      Real Heroes don't wear capes

    • @petor95
      @petor95 3 роки тому

      Thank you 🙏🏾

    • @Billyxiao
      @Billyxiao 2 роки тому

      Amazing

  • @rishanVJrathne
    @rishanVJrathne Рік тому +2

    Thank You, Dr. Ana Bell . It was a nice explanation of the SCOPE.

  • @ProfitScalpKing1
    @ProfitScalpKing1 7 років тому +16

    Thanks a bunch Dr. Bell

  • @xuefengwong9097
    @xuefengwong9097 5 років тому +2

    The scope part is clear and easy to understand, thanks!

  • @DARELASISI
    @DARELASISI 2 роки тому +2

    THIS VIDEO IS PYTHON MADE EASY, THANK YOU, ANA.

  • @mustafaadelamer2789
    @mustafaadelamer2789 5 років тому

    thank you so much for your illustrations Dr. Ana. Very very useful.

  • @abdelkarimjaja7740
    @abdelkarimjaja7740 5 років тому +1

    Thanks, MIT for give us this opportunity

  • @akbarrauf2741
    @akbarrauf2741 7 років тому +12

    thank you ,mit

  • @mikhailskalyga9386
    @mikhailskalyga9386 4 роки тому +5

    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
      @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

  • @GovindKumar-mu6jq
    @GovindKumar-mu6jq 3 роки тому

    The way she explained about the scope of variables is awesome...

  • @aymensekhri2133
    @aymensekhri2133 4 роки тому

    Thanks a lot Dr. Ana Bell

  • @Mokhtartba
    @Mokhtartba 8 місяців тому

    she is So Kind during Explaining and thanks for that Ana 😀 Greetings from #Morocco .

  • @alirezarezaeikalat9421
    @alirezarezaeikalat9421 3 роки тому

    tnx MIT for make these courses public

  • @goclbert
    @goclbert Рік тому +3

    Me doing problem set 1: "Man its gonna take me a long time to be able to afford a house"

  • @yuminkim7264
    @yuminkim7264 6 років тому +2

    a nice lecture. Thanks!

  • @blackprince3288
    @blackprince3288 4 роки тому

    Best explanation of abstraction and decoMposition!!!!!

  •  3 роки тому +1

    8:00 modules. Create it once, debug it once and use it many times for different projects or in your code with different inputs.

  • @Linux4Ever2011
    @Linux4Ever2011 5 років тому

    Thank you for such clear explanation :)

  • @MrFaiqueShakil
    @MrFaiqueShakil 4 роки тому

    best function lecture ever.

  • @Mujahid_Abbas
    @Mujahid_Abbas 3 роки тому

    Thanks Mam For Upload On U-Tube so That I am able to listen this.

  • @denniskamonde6836
    @denniskamonde6836 7 років тому

    great job

  • @jadenmax679
    @jadenmax679 4 роки тому

    Great. Thank you.

  • @dmac4u2luv
    @dmac4u2luv 5 років тому

    Brilliant!

  • @strategoclownery389
    @strategoclownery389 Рік тому +2

    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
      @mitocw  Рік тому +4

      In IDLE, use ctrl + D to comment out many lines of code.

  • @nazeehsaifi916
    @nazeehsaifi916 7 років тому

    Thank you

  • @jakeambrose4294
    @jakeambrose4294 7 років тому +33

    im lost but im just going to keep watching.

    • @pocok5000
      @pocok5000 6 років тому +20

      I'm not sure that's a good idea. Watch again until you understand. Then you can understand the rest easier.

    • @LordAhmedAmr
      @LordAhmedAmr 6 років тому +4

      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
      @rysknet 5 років тому +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
      @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
      @MrFaiqueShakil 4 роки тому

      @@idontknow-ms8mc It is more complex than this.

  • @samratdalal6878
    @samratdalal6878 3 роки тому

    It's awesome.

  • @saurabhmiyani9014
    @saurabhmiyani9014 4 роки тому

    Thanks MIT

  • @hycopa2447
    @hycopa2447 Рік тому

    Thank you MIT for feeling in the gaps :)

    • @atlantic_love
      @atlantic_love Рік тому

      I see what you did there lol. Get back to programming :D

  • @jongcheulkim7284
    @jongcheulkim7284 2 роки тому

    Thank you.

  • @miscellany9674
    @miscellany9674 Рік тому +1

    تحياتي للعميد بامطرف

  • @algemmegla9002
    @algemmegla9002 3 роки тому +3

    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
      @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?

  • @jayholt
    @jayholt 4 роки тому +9

    Oh man, missed a good opp to have a func_e. Regardless, loving this content. Makes me miss college 😭

  •  3 роки тому

    4:00 functions: decomposition and abstraction

  • @percih70
    @percih70 6 років тому +2

    Python tutor is awesome .......

    • @sd-xk7qr
      @sd-xk7qr 3 роки тому

      It's great. The only problem sometimes is that it stops at 1000 steps

  • @danielrio1967
    @danielrio1967 5 років тому +1

    Nice!
    i will come to US in few years!

    • @x15cyberrush9
      @x15cyberrush9 5 років тому

      @@mzaje9803 who r you to say that? don't underestimate india ns and Chinese

  • @phildawg91
    @phildawg91 4 роки тому

    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?

  • @GhostkillerPlaysMC
    @GhostkillerPlaysMC 4 роки тому +1

    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
      @JeetSingh-kp5xq 4 роки тому +1

      only if we assign the return of h() to x like x= h(). Otherwise 4

  • @masoudelahian613
    @masoudelahian613 Рік тому +1

    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.

  • @Hivlik
    @Hivlik 3 роки тому +1

    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
      @as-br9ov 2 роки тому +1

      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.

  • @Liaomiao
    @Liaomiao 6 років тому +1

    why did it print with return and without return twice?

  • @kattetivikram1862
    @kattetivikram1862 5 років тому

    Iam mca student in india.it has very useful to me

  • @aftabahmed2460
    @aftabahmed2460 6 років тому

    informative

  • @peterhind
    @peterhind 3 місяці тому

    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.

  •  3 роки тому

    11:53 How you write a function. Parts of a function

  • @Yugandhar635
    @Yugandhar635 6 років тому +2

    when func_a( ) is mapped to z ... then can we write return z instead of return z( ) ?

    • @nikhilkolhe2374
      @nikhilkolhe2374 2 роки тому +1

      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.

  • @algemmegla9002
    @algemmegla9002 3 роки тому +4

    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

  • @leokettner636
    @leokettner636 6 років тому +9

    The title of this lecture should be "funception"

    • @ziadanwar5296
      @ziadanwar5296 3 роки тому

      I came down searching for that comment Lmao

  • @carmenc7251
    @carmenc7251 3 роки тому

    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
      @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

  • @tawfeeqmuallem9086
    @tawfeeqmuallem9086 5 років тому

    I LLLLOOOOVVVEEE YOUUUUUUUUUUUU

  •  3 роки тому

    25:00 example of a function "is even"

  •  3 роки тому

    10:00 recap functions

  • @theDrake-tx1vj
    @theDrake-tx1vj 7 років тому

    if suppose the function h() in the last example is called twice, does the "scope" remain or is it formed twice? pls help

    • @rootytuners
      @rootytuners 4 роки тому

      It is a fresh scope on each call.

  • @MrFaiqueShakil
    @MrFaiqueShakil 4 роки тому +1

    What's the shortcut for deleting the hash # from each line at once, like Professor Ana bell does regularly in Spyder IDE.

  • @zigginzag584
    @zigginzag584 3 роки тому

    Hello class!

  • @pianoworld_1
    @pianoworld_1 Рік тому +1

    What a coincidence , it's also raining In my city Hyderabad Pakistan due to a cyclone.

  • @YoshBruh
    @YoshBruh 4 роки тому +1

    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

  • @leixun
    @leixun 4 роки тому +3

    *My takeaways:*
    Function specification/docstring 13:00

  • @tcchan14
    @tcchan14 7 років тому +1

    Which lecture is required to do pset2?

    • @andreymlv
      @andreymlv 3 роки тому

      ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/syllabus/

  • @demon-godashura1661
    @demon-godashura1661 6 років тому

    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
      @rootytuners 4 роки тому

      You’ve probably omitted a closing quote or bracket somewhere.

  • @edogg5690
    @edogg5690 6 років тому

    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
      @saurabh75prakash 6 років тому +3

      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)

  • @LXMP284
    @LXMP284 7 місяців тому

    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!

  • @pricesmith8450
    @pricesmith8450 6 років тому

    Is it bad style to use a variable from outside the scope of a function?

    • @pricesmith8450
      @pricesmith8450 6 років тому

      nvm.. yes.

    • @ayandamarotya9607
      @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...

  • @kushagrakanungo9517
    @kushagrakanungo9517 4 роки тому +1

    How come the instructor can remove the comments from the code in one go? What is the command to do it?

  • @GhostkillerPlaysMC
    @GhostkillerPlaysMC 4 роки тому +8

    Lol even at MIT the students begin packing up before the professor is done teaching

  • @Liaomiao
    @Liaomiao 6 років тому

    when you print(function_name) it just prints out what the function returns?

    • @leboyoyo
      @leboyoyo 5 років тому

      Liaomiao yes

    • @rootytuners
      @rootytuners 4 роки тому +3

      @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.

  • @EgeOnatDoguslu
    @EgeOnatDoguslu 6 років тому +2

    Assignment: Hangman
    github.com/egeonatdoguslu/MIT-Assignments/blob/Hangman/Hangman

    • @pricesmith8450
      @pricesmith8450 6 років тому

      got any of the other assignments? would love to compare some of mine

  •  3 роки тому

    26:03 in python everything is an object

  • @HadeelHanaysheh
    @HadeelHanaysheh 7 років тому

    why we are didn't use x ='abc' on any where ???

    • @andredc161
      @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

  • @emansalah2766
    @emansalah2766 5 років тому

    Where do I get the python tutor ?

  • @joaooliveira185
    @joaooliveira185 Рік тому

    Based

  • @lc0414
    @lc0414 4 роки тому

    real lecture starts at 11:00

  • @doraemongameplay5683
    @doraemongameplay5683 4 роки тому

    im 12 and i dont understand what is func, help...

  • @tanphanvan2693
    @tanphanvan2693 3 роки тому

    Great lecture. Anyone has the solution for the assignment? Thanks very much!

  • @quocvu9847
    @quocvu9847 Рік тому

    34:34

  • @shubhankarsingh4065
    @shubhankarsingh4065 3 роки тому

    19:23 when you hit a function call

  • @McAwesomeReaper
    @McAwesomeReaper 9 місяців тому

    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.

  • @alexandrugheorghe5610
    @alexandrugheorghe5610 9 місяців тому

    29:03 "so z is func_c" should have been "so z is func_a"

  • @dani7599
    @dani7599 6 років тому +1

    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.

  • @ashen1970
    @ashen1970 5 років тому

    Whoever edited this open courses must didn’t want to leak the major part of MIT’s succeed in education.

  • @riccardovasellini6570
    @riccardovasellini6570 4 роки тому +1

    Does anyone know how she deletes all the # character at once?

  • @simarmalhan6527
    @simarmalhan6527 2 роки тому

    Pam beesly

  • @bobanmilisavljevic7857
    @bobanmilisavljevic7857 5 місяців тому

    🦾🤠🇺🇲

  • @devzoi3715
    @devzoi3715 5 років тому

    i didnt use it my mom did

  • @hamids4550
    @hamids4550 6 років тому

    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
      @sridharr8306 6 років тому +1

      Try to do that bit by yourself, using python tutor. It will be clear

  • @kunjs3687
    @kunjs3687 4 роки тому +1

    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
      @mitocw  4 роки тому +1

      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
      @woddlyoats 6 місяців тому

      If your dad is getting mad then he is a really pathetic person.

  • @LordAhmedAmr
    @LordAhmedAmr 6 років тому

    any one here solved the 'hangman' assignment

    • @EgeOnatDoguslu
      @EgeOnatDoguslu 6 років тому

      github.com/egeonatdoguslu/MIT-Assignments/blob/Hangman/Hangman

  • @yukeyang5735
    @yukeyang5735 5 років тому +1

    Why is the teacher always in the same outfit?Curious.

  • @daveyjones9699
    @daveyjones9699 4 роки тому +2

    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.

  • @avinashdwivedi2015
    @avinashdwivedi2015 5 років тому +1

    Clickbait