pulling together the code fragments from the previous sectionthe whole program looks like thisdef print_lyrics ()print (" ' lumberjackand ' okay "print (" sleep all night and work all day "def repeat_lyrics ()print_lyrics (print_lyrics (repeat_lyrics (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 flow of executionin 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 when 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 argumentssome 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