#!/bin/env python
# From: https://docs.python.org/3/tutorial/controlflow.html#function-annotations
# NB: you can add type information as 'annotations' to function arguments, and define a result type
#     these are optional and not necessarily checked

def f(ham: str, eggs: str = 'eggs') -> str:
     print("Annotations:", f.__annotations__)
     print("Arguments:", ham, eggs)
     return ham + ' and ' + eggs


f('spam')
# will print
#  Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
#  Arguments: spam eggs
#  'spam and eggs'
