Summary
We covered several very different topics in this chapter. Each represented an important non-object-oriented feature that is popular in Python. Just because we can use object-oriented principles does not always mean we should!
However, we also saw that "the Python way" often just provides a shortcut to traditional object-oriented syntax. Knowing the object-oriented principles underlying these tools allows us to use them effectively in our own classes.
We covered:
Built-in functions
Comprehensions and generators
Function arguments, variable arguments, and keyword arguments
Callback functions and callable objects
In the next chapter, we're going to study design patterns; building blocks that object-oriented programmers use to create maintainable applications. In many cases, we'll see that, as in this chapter, Python provides syntax for popular design patterns that we can use instead.