Grammar読んでたら
funcdef: 'def' NAME parameters ['->' test] ':' suite
ってなってるんだけど
['->' test]
ってなんなの?どういう時に使うんだろうか?
111125追記
MLで聞いたら解決した。Python3から導入されたFunction Annotationsというものらしい。 ->で戻り値のアノテーションを付加できる。
PEP 3107のuse caseを見てみると
- 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
この中で戻り値のメタデータが使われそうなのはIDEに通知する用途くらいなんだけど、他にもあるんだろうか?
個人的にはFunction overloading / generic functionsは便利そうだなぁと思うんだが、PEP 3124はDeferredになってた。
それからanntoolsはどうなんだろう?Scala使えばいいじゃないかと思うんだが、decoratorでちょっと型チェックしたい時とかには便利なのかもしれないなぁ。