Python is a high-level, general-purpose, interpreted programming language which saw its first release in 1991.
This means that the programming language has many abstractions versus it’s lower level counter parts (Machine and Assembly language).
Python was originally created by Guido van Rossum as a successor to the ABC language at the time. Python is currently maintained by the Python Software Foundation which is entirely non profit as well as a great amount of support from open source developers.
As defined in PEP 483, Pythons 3 main typing disciplines are Duck (typing), Dynamic, and Gradual (typing). You can read about PEP483 here.
The term Duck typing comes from the saying “If it walks like a duck, and it quacks like a duck, then it must be a duck.”.
Really what this is trying to say is that the class or type of an object is less important than the properties is posses such as the methods or attributes. In duck typing you should check the contents of an object to identify it rather than the class type itself.
Python is a dynamically typed programming language meaning that generally (unless specific) the interpreter will implicitly decide the types you require to run your application from the context you provided it.
In a dynamically typed language, the type of a variable is also allowed to change.
When you do not want Python to implicitly decide the types you use, you can also decide to have it statically typed. This combination of static and dynamic typing is referred to as gradual typing.