Cosa significa -> nelle definizioni delle funzioni Python?

| | |

Recentemente ho notato qualcosa di interessante guardando le specifiche grammaticali di Python 3.3 :

funcdef: "def" NAME parametri ["->" test] ":" suite 

Il blocco "freccia" opzionale era assente in Python 2 e io non siamo riusciti a trovare alcuna informazione sul suo significato in Python 3. Si scopre che questo è Python corretto ed è accettato dall'interprete:

def f(x) -> ; 123: return x 

Pensavo che questa potesse essere una specie di sintassi di precondizione, ma:

  • Non riesco a testare x qui, poiché non è ancora definito,
  • Non importa cosa metto dopo la freccia (ad es. 2 < 1), non influisce sul comportamento della funzione.

Qualcuno abituato a questo stile di sintassi potrebbe spiegarlo?