Functions are instructions or, in my view, mini program or mini algorithms, that perform a particular task.  Some are built-in to Python (e.g., max) and some are user defined as if they were built-in. This is very convenient.  There is the concept of environment.  The environment is the tacking of the bindings of variables and values to the function.  Root finding illustrate how Python “tracks” bindings that can later be used when the user wants to find a particular value.  Functions can be associated with modules that can capture the concept of “modularity” when functions are grouped.  These modules can be used in other place.  I kind of see this as one might import a set of classes although these modules are internal.  
Computational complexity addresses the issue of computational “efficiency.”   The key is a given application that is less complex is likely to be more efficient.  Efficiency kind of boils down to how long it will take for the program to run and how much it uses computational resources (e.g., RAM).  Time is usually the biggest concern.  One wants to balance computational and conceptual complexity.  This means “clean” code (i.e., without unnecessary data structure and methods) and code that is easily understood.  My understanding is that one only needs to write to code that is absolutely necessary to carry out the “concept” or requirements for a given application (e.g., balancing a checkbook). 

Graph is a data type that is an optimization technique.  Examples include directed graphs and trees.  They address the problem of efficiency in other optimization techniques.  Usually they involve minimizing something (e.g., cost) or maximizing something (e.g., profit).  An example is given in a lecture that involves a student taking a flight home.  Cities are marked on a map and the idea is to find the most efficient and least costly route.  Using “edges” an algorithm searches through alternative to find the least costly route.  The edges are the links between cities or in the case of the web example, the links to other web sites.   Another example is given for diseases.  Trees with nodes represent a mapping where the connected nodes are edges.  Graph element are data placeholders for the data type.
