In addition to the ones already mentioned in this chapter, Python comes bundled with a few other useful decorators. There are some that aren't in the standard library (yet?).
If you've used C++ or Java before, you're probably used to having ad hoc polymorphism available—different functions being called depending on the argument types. Python being a dynamically typed language, most people would not expect the possibility of a single dispatch pattern. Python, however, is a language that is not only dynamically typed but also strongly typed, which means we can rely on the type we receive.
Note
A dynamically typed language does not require strict type definitions. On the other hand, a language such as C would require the following to declare an integer:
int some_integer = 123;
Python simply accepts that your value has a type:
some_integer = 123
As opposed to languages such as JavaScript and PHP, however, Python does very little implicit type...