it simply assigns name at runtime unlike in compiled languages such as cpython functions do not need to be fully defined before the program runs more generallydefs are not evaluated until they are reached and runand the code inside defs is not evaluated until the functions are later called because function definition happens at runtimethere' nothing special about the function name what' important is the object to which it refersothername func othername(assign function object call func again herethe function was assigned to different name and called through the new name like everything else in pythonfunctions are just objectsthey are recorded explicitly in memory at program execution time in factbesides callsfunctions allow arbitrary attributes to be attached to record information for later usedef func()func(func attr value create function object call object attach attributes first exampledefinitions and calls apart from such runtime concepts (which tend to seem most unique to programmers with backgrounds in traditional compiled languages)python functions are straightforward to use let' code first real example to demonstrate the basics as you'll seethere are two sides to the function picturea definition (the def that creates functionand call (an expression that tells python to run the function' bodydefinition here' definition typed interactively that defines function called timeswhich returns the product of its two argumentsdef times(xy)return create and assign function body executed when called when python reaches and runs this defit creates new function object that packages the function' code and assigns the object to the name times typicallysuch statement is coded in module file and runs when the enclosing file is importedfor something this smallthoughthe interactive prompt suffices calls the def statement makes function but does not call it after the def has runyou can call (runthe function in your program by adding parentheses after the function' name function basics