Functions as Objects

In Python, functions are first-class. You can pass them as arguments, return them from other functions, store them in lists and dicts, and attach attributes to them. This part is about the consequences of that single fact.