Drkcore

25 11 2011 Python Tweet

Python3のGrammarのdefがわからん

Grammar読んでたら

funcdef: 'def' NAME parameters ['->' test] ':' suite

ってなってるんだけど

['->' test]

ってなんなの?どういう時に使うんだろうか?

111125追記

MLで聞いたら解決した。Python3から導入されたFunction Annotationsというものらしい。 ->で戻り値のアノテーションを付加できる。

  • PEP 3107
  • 第7回 関数アノテーションでスマートにプラスアルファの実現

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になってた。

  • Python 3000 - Adaptation or Generic Functions?

ProductName 実践Common Lisp
Peter Seibel
オーム社 / 4410円 ( 2008-07-26 )


それからanntoolsはどうなんだろう?Scala使えばいいじゃないかと思うんだが、decoratorでちょっと型チェックしたい時とかには便利なのかもしれないなぁ。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021