The possible uses

While annotations have great potential, they are not widely used. An article explaining the new features that were added to Python 3 (refer to https://docs.python.org/3/whatsnew/3.0.html) says that the intent of this feature as follows: 

"The intent is to  encourage experimentation through metaclasses, decorators, or frameworks ."

On the other hand, PEP 3107, which officially proposed function annotations, lists the following set of possible use cases:

  • Providing typing information:
    • Type checking
    • Let IDEs show what types a function expects and returns
    • Function overloading/generic functions
    • Foreign language bridges
    • Adaptation
    • Predicate logic functions
    • Database query mapping
    • RPC parameter marshaling
  • Other information:
    • Documentation for parameters and return values

Although the function annotations are as old as Python 3, it is still very hard to find any popular and actively maintained package that uses them for something else other than type checking. So, except static type checking, function annotations are still mostly only good for experimentation and playing – the initial purpose for their inclusion in the initial release of Python 3.