All so true! Yes, Python can indeed not only be object-oriented but also functional or procedural - it's multi-paradigmatic. Furthermore, it's true that Python can also be compiled rather than interpreted. However, I was using the definition found in python's documentation (python.org/doc/essays/blurb) as a blueprint for this blog. Not only that, the blog was targeted at beginners so including all the nitty gritty details would not be so beginner-friendly. Thanks for your input!
Not exactly. Python is multi-paradigmatic. One can write Python program without using OOP if we do not count programming with objects. Compared to languages like Java or C#, no one forces programmers to insert the functionality into classes.
The type inference is not exactly related to dynamic typing. On the contrary, types are inferred in statically typed languages to reduce the boilerplate and get closer to dynamically typed languages. The CPython interpreter doesn't infer types. Under the hood, he is examining objects in runtime. If the requested operation is not valid for an examined type, the interpreter raises an exception.
Statically typed languages require types to be known before they enter runtime which is not the case with Python and dynamically typed languages in general. Python uses type inference for optional static typing, like in Mypy or similar.
On the other hand, compared to languages like JavaScript, Python is strongly typed which is not the case with JavaScript.
Finally, Python is a specification of a programming language, so it can be interpreted or compiled. CPython (the most common runtime) as its reference implementation has an interpreter while PyPy is compiled to bytecode if I am not mistaken.