What type of language is Python?
I use python in all my classes and got into a discussion with my students about what type of language python is.

Initially, I thought python is a completely "non-typed" language because we are able to suppress types while declaring variables and parameters:

*def func(a, b): ...*

But then I found out that it's possible to type things up explicitly:

*def func(a: int, b: int) -&gt; int: ...*

I ended up categorizing python as an "implicitly typed" language, and the interpreter must fill the types I don't explicitly add to the code. However, one of my students pointed out that, as python admits dynamic typing, it is a "dynamically typed language", which is the official classification (?).

However, I have failed to wrap my mind around the fact that I can explicitly set the types, but the interpreter won't bat an eye in case I recast my variables:

*def func(a: int, b: int) -&gt; int:*

*...c: int = a + b*

*...return c*

*d: int = func(1, 2)*

*print(d)*

*d = "dynamically typed?"*

*print(d)*

Is "weakly-typed dynamic language" a possible way to classify python?