advanced function topics this introduces collection of more advanced function-related topicsrecursive functionsfunction attributes and annotationsthe lambda expressionand functional programming tools such as map and filter these are all somewhat advanced tools thatdepending on your job descriptionyou may not encounter on regular basis because of their roles in some domainsthougha basic understanding can be usefullambdasfor instanceare regular customers in guisand functional programming techniques are increasingly common in python code part of the art of using functions lies in the interfaces between themso we will also explore some general function design principles here the next continues this advanced theme with an exploration of generator functions and expressions and revival of list comprehensions in the context of the functional tools we will study here function design concepts now that we've had chance to study function basics in pythonlet' begin this with few words of context when you start using functions in earnestyou're faced with choices about how to glue components together--for instancehow to decompose task into purposeful functions (known as cohesion)how your functions should communicate (called coupling)and so on you also need to take into account concepts such as the size of your functionsbecause they directly impact code usability some of this falls into the category of structured analysis and designbut it applies to python code as to any other we introduced some ideas related to function and module coupling in when studying scopesbut here is review of few general guidelines for readers new to function design principlescouplinguse arguments for inputs and return for outputs generallyyou should strive to make function independent of things outside of it arguments and return statements are often the best ways to isolate external dependencies to small number of well-known places in your code