title: What are good uses for Python3's "Function Annotations"?
body: <p>Function Annotations: <a href="http://www.python.org/dev/peps/pep-3107/" rel="noreferrer">PEP-3107</a></p>
  
  <p>I ran across a snippet of code demonstrating Python3's function annotations.  The concept is simple but I can't think of why these were implemented in Python3 or any good uses for them.  Perhaps SO can enlighten me?</p>
  
  <p>How it works:</p>
  
  <pre><code>def foo(a: 'x', b: 5 + 6, c: list) -&gt; max(2, 9):
      ... function body ...
  </code></pre>
  
  <p>Everything following the colon after an argument is an 'annotation', and the information following the <code>-&gt;</code> is an annotation for the function's return value.  </p>
  
  <p>foo.func_annotations would return a dictionary:</p>
  
  <pre><code>{'a': 'x',
   'b': 11,
   'c': list,
   'return': 9}
  </code></pre>
  
  <p>What's the significance of having this available?</p>