TODO: ADD MORE
- Python is "dynamically typed," meaning that variable names are bound to objects only, not to a particular type. You can assign
foo
to a string, and then reassign it to anint
with no issues. Because this applies to the named parameters in function / method signatures as well Python's callables are treated as "polymorphic-by-default", even though the code may only work with a limited number of types at runtime.