this program contains two function definitionsprint_lyrics and repeat_lyrics function definitions get executed just like other statementsbut the effect is to create function objects the statements inside the function do not get executed until the function is calledand the function definition generates no output as you might expectyou have to create function before you can execute it in other wordsthe function definition has to be executed before the first time it is called exercise move the last line of this program to the topso the function call appears before the definitions run the program and see what error message you get exercise move the function call back to the bottom and move the definition of print_lyrics after the definition of repeat_lyrics what happens when you run this program flow of execution in order to ensure that function is defined before its first useyou have to know the order in which statements are executedwhich is called the flow of execution execution always begins at the first statement of the program statements are executed one at timein order from top to bottom function definitions do not alter the flow of execution of the programbut remember that statements inside the function are not executed until the function is called function call is like detour in the flow of execution instead of going to the next statementthe flow jumps to the body of the functionexecutes all the statements thereand then comes back to pick up where it left off that sounds simple enoughuntil you remember that one function can call another while in the middle of one functionthe program might have to execute the statements in another function but while executing that new functionthe program might have to execute yet another functionfortunatelypython is good at keeping track of where it isso each time function completesthe program picks up where it left off in the function that called it when it gets to the end of the programit terminates what' the moral of this sordid talewhen you read programyou don' always want to read from top to bottom sometimes it makes more sense if you follow the flow of execution parameters and arguments some of the built-in functions we have seen require arguments for examplewhen you call math sin you pass number as an argument some functions take more than one argumentmath pow takes twothe base and the exponent