しっかり学んで有効に使おう!Python3.5からの新機能「型ヒント」を知る #pyconjp #pyconjp_203

型ヒントについて考えよう! Yusuke Miyazaki 説明 Python 3.5 に導入された型ヒント (Type Hints) は、プログラム中に型アノテーションを記述する方法を標準化し、型チェッカーなどのツールで利用できるようになっています。このセッションでは Python の型ヒントについて紹介した後、他の言語での同様の機能について紹介し、Python の型ヒントの優れているところ、劣っているところを明らかにし、今後の型ヒントの活用方法について考えます。 続きを読む
3
ギーラボちゃん@ギークラボ長野 @glnagano

アノテーとって注釈を付けるって意味なんですね(無知 #pyconjp #pyconjp_203

2016-09-22 16:32:38
ギーラボちゃん@ギークラボ長野 @glnagano

(うだうだやらずに変数の前にstrとかintってすければええんや!!) #pyconjp #pyconjp_203

2016-09-22 16:34:47
夜道 (yomichi) 🦇 @yomichi_137

関数アノテーション・型ヒント(ざっくり):これまでdocstring で引数の説明とか型とかを書いていたのを、言語仕様として付け加えた #pyconjp #pyconjp_203

2016-09-22 16:35:01
Tetsuya Morimoto @t2y

スライドで紹介されたので和訳を貼っときますね / 漸進的型付けとは何か qiita.com/t2y/items/0a60… #pyconjp_203

2016-09-22 16:37:03
リンク Qiita What is Gradual Typing: 漸進的型付けとは何か - Qiita 本稿は Python に型アノテーションを追加するという [PEP 483 - The Theory of Type Hinting](https://www.python.org/dev/peps/pep-0483/) の提案で参照...
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_203 pep484 にてType hintが仕様として追加されたがこれは強制ではない(あくまで「ヒント」)

2016-09-22 16:37:31
夜道 (yomichi) 🦇 @yomichi_137

typing module を使うといい感じな型ヒントを指定できる ( int が入ったList 、とか) #pyconjp #pyconjp_203

2016-09-22 16:38:32
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_203 既にあるソースコードにヒントを付けたい場合は grret.pyというソースに対し greet.pyi というファイルを作り関連付けることで型ヒントを作成できる

2016-09-22 16:40:08
夜道 (yomichi) 🦇 @yomichi_137

`hoge.py` にある関数にあとからアノテーションしたいときは `hoge.pyi` というファイルに`def hoge( x: int) -> int : … ` とかすることができる #pyconjp #pyconjp_203

2016-09-22 16:40:11
Tetsuya Morimoto @t2y

variable annotation は ide やエディタでシンタックスハイライトしやすいから良いのだろうな #pyconjp_203

2016-09-22 16:40:59
夜道 (yomichi) 🦇 @yomichi_137

別ファイルで付けられるなら割と移行は楽そう #pyconjp #pyconjp_203

2016-09-22 16:41:00
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_203 型ヒントは強制力を持たないので、実行時に違う型を渡してもエラーを吐かない。 当然ながら実行速度は変わらない ↓ その代わり後方互換性に優れる

2016-09-22 16:42:55
Tetsuya Morimoto @t2y

型ヒントを書いてもパフォーマンスは上がりもしないし下がりもしない (はず) #pyconjp_203

2016-09-22 16:43:05
夜道 (yomichi) 🦇 @yomichi_137

CPython は型ヒントを無視するので後方互換性が保たれている (Python2 は無理) パフォーマンスが落ちることも上がることもない #pyconjp #pyconjp_203

2016-09-22 16:43:21
MacRat @MacRat_jp

(str) -> str って書き方、なんとなくHaskellを感じる…。 #pyconjp_203

2016-09-22 16:43:54
夜道 (yomichi) 🦇 @yomichi_137

基本的には(埋め込み)ドキュメントや外部ツール #pyconjp #pyconjp_203

2016-09-22 16:44:04
Tetsuya Morimoto @t2y

mypy は本当に実用レベルまでいくのか、それはいつか?というのがいまの懸念かなぁ #pyconjp_203

2016-09-22 16:45:35
ギーラボちゃん@ギークラボ長野 @glnagano

型ヒント、数字っぽい値だけど実は文字列ですみたいな項目で使うと良いかも?(dateとかdatetimeもいいかも?) #pyconjp #pyconjp_203

2016-09-22 16:46:16
Tetsuya Morimoto @t2y

一方で pycharm の静的解析はうまくいっているようにみえる #pyconjp_203

2016-09-22 16:47:25
夜道 (yomichi) 🦇 @yomichi_137

JavaScript の型付けプロジェクトとの比較 #pyconjp #pyconjp_203

2016-09-22 16:49:23
トゥギャッター開発まとめ @tg__dev

#pyconjp #pyconjp_203 「PHPはあんまりおもしろくないんですが...」 会場笑い

2016-09-22 16:53:17
Ryuji Tsutsui @ryu22e

JavaScriptでは "Hello" * 10 だと NaNになる #pyconjp #pyconjp_203

2016-09-22 16:53:37