If you know how to work with decision structures like if statements, and loops like Python's for loop and wild loop, then you can write any program in the world. And strictly speaking functions are not necessary. However, we've been writing most of our code thus far in script form, meaning that there's not much organization to it. All of our code is abutted against the left edge of the editor. And you can imagine that if we ended up producing 100, 1000, or 10,000 of lines of code, that would be pretty unwieldy. And that's where functions come in. And it's all about organizing your code and producing manageable and maintainable code, all law, a program versus a short script. Now creating your own functions is really easy. All you have to do is use the depth keyword short for define I and you can name the function whatever you want, follow it with parentheses and a colon. And of course the colon means that the next line must be indented. And that next line will be one or more statements that make up the body of your function. Now I must have at least one executable line of code, but I can use the pass keyword. That's kind of a placeholder until you figure out what you wanna to do. So actually this should compile. It's not gonna run, there's nothing to do because this just checks the sequence of this function and then stores it away in memory to use later. And it's not until you invoke or call the function that this code that's indented is actually executed. So there is a convention in programming, not just Python, but in C, C++, Java C-sharp to start your program that may have many files be composed of lots and lots of code, but the starting point by convention is called main. So we're going to stick with that convention and just so we can get something that shows up, we will say in main. Now, like I mentioned before, this will compile, but it's not going to do anything until I actually invoke or call the function by using its name. And we'll see the results. Now you can have as many functions as you want inside of your program. And that's one of the main advantages is code reuse. So let's say that I wanted to display all the languages I know. Well, of course I know English, but I know several other languages and I'll just put some of those here. And by the way, HTML that's markup language. It's not a programming language, but it's a language that's used to make your webpage a better structured and look a little better. But now after this line here, I can call the other function, display languages. And so we should see the, the print output that were in the main, but it should also invoke my function and show me all of those languages. Now, what if we want to show our resume and certainly displaying your resume would, should include the languages you know, especially if you're a programmer, but we could create another function, maybe call it display-resume that maybe includes your name, your phone number. And part of this would certainly be the languages that you know, so I can have this function call the function above in essence, chaining those together. And I could leave this here, or I could comment that out and after resume, maybe with an extra new line. So I'll have two new lines. So it'd be like a heading and then I will call display-resume. So adults display resume will show my name, phone number, and then my languages by calling the function above it. If I don't have any syntax errors. So one rule in Python, well, I just forgot my colon. But what I was going to mention is one common error in Python is to forget a trailing print, and that will often show up on the line after the actual problem. So in my case, I just forgot the colon and you can see my resume.