Two lessons: Default parameters make functions flexible. Users can call with fewer arguments when defaults work.
Return strings instead of printing them. This lets the caller decide what to do: print it, store it, or use it in another expression. Design functions to be reusable. Printing locks the output to the screen. Returning gives the caller options.