Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Python Type Annotation
Search
K Yamaguchi
May 19, 2017
Technology
0
30
Python Type Annotation
K Yamaguchi
May 19, 2017
Tweet
Share
More Decks by K Yamaguchi
See All by K Yamaguchi
Python 実行環境の話 2024
quintia
0
13
Python 実行環境の話
quintia
0
25
裏切られる直感と、確率と精度のはなし
quintia
0
62
Apache Spark Tutorial
quintia
0
10
No Error Conversion of Floating Points
quintia
0
16
Other Decks in Technology
See All in Technology
“新卒らしさ”を脱ぎ捨てて 〜1年を経て学んだこと〜
rebase_engineering
0
120
積み上げられた技術資産と向き合いながら、プロダクトの信頼性をどう守るか
plaidtech
PRO
0
260
Cloud Run を解剖して コンテナ監視を考える / Breaking Down Cloud Run to Rethink Container Monitoring
aoto
PRO
0
110
Swiftは最高だよの話
yuukiw00w
2
280
Machine Intelligence for Vision, Language, and Actions
keio_smilab
PRO
0
440
継続戦闘能⼒
sansantech
PRO
0
200
AIに実況させる / AI Streamer
motemen
3
1.4k
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
740
2025advance01
minamizaki
0
120
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
iOS/Androidで無限循環Carousel表現を考えてみる
fumiyasac0921
0
120
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
How GitHub (no longer) Works
holman
314
140k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
KATA
mclloyd
29
14k
Gamification - CAS2011
davidbonilla
81
5.3k
Six Lessons from altMBA
skipperchong
28
3.8k
Visualization
eitanlees
146
16k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
YesSQL, Process and Tooling at Scale
rocio
172
14k
Building Adaptive Systems
keathley
41
2.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
25
2.8k
Transcript
PyCharmのススメ 第1部 Type Hints編 もしくは、Pythonと型アノテーション ⼭⼝健史 2017-05-19 総合研究会 研究Tips
Pythonと型アノテーション 1
型アノテーションの歴史 p Python3.0〜 (Function Annotations) p メソッド定義の引数と返り値の型アノテーションの追加 p Python3.5〜 (Type
Hints) p typing モジュール (ジェネリクス/型変数/型エイリアス/Any/Union/Optional/etc …) p Python3.6〜 (Variable Annotations) p 変数アノテーション 2
Function Annotations (Python3.0) p 関数の引数と、返り値の型アノテーション p ただしインタプリタは型アノテーションを無視する p サードパーティ製ツールが必要 p
そこで PyCharm の出番ですよ!! 3 def 関数名(引数1: 型,引数2: 型,…) -> 返り値の型: https://www.jetbrains.com/pycharm/
Function Annotations (Python3.0) p 返り値の型アノテーションのおかげで . を⼊⼒した時点で補完候補に型strの候補が出現する p 引数の型アノテーションのおかげで 警告が出る
4 若⼲の嘘が あります
Function Annotations (Python3.0) p 型アノテーションに書けるのは1つの値(式)だけ p list と書くと list なのは分かるけれど
そこに何が⼊っているのかはアノテーション できない p 「int型 か float型」みたいな直和型が書けない p 現実的にはあまり役に⽴たない 5
型アノテーションの歴史 p Python3.0〜 (Function Annotations) p メソッド定義の引数と返り値の型アノテーションの追加 p Python3.5〜 (Type
Hints) p typing モジュール (ジェネリクス/型変数/型エイリアス/Any/Union/Optional/etc …) p Python3.6〜 (Variable Annotations) p 変数アノテーション 6
Type Hints (Python3.5) p Python3.5でtypingモジュール登場!! (ただし暫定モジュール) p ジェネリクス/型変数/型エイリアス p Any型/Union型/Optional型
p Python3.0 の関数アノテーションで決まっていたのは 構⽂だけで、何をどう書くのか? の仕様はなかった p →Python3.5で劇的に改善 7
Type Hints (Python3.5) p ジェネリクス p Dict[str, Tuple[int, str, List[Tuple[str,
List[int]]]]] 型の 変数dがあるとき、d[’key’][2][3][0] の型は? 8 ジェネリック版のlist型ヒント 型指定を [] で括る
Type Hints (Python3.5) p 型変数 9 型変数 パラメータ化された型
Type Hints (Python3.5) p Union型(直和型) p どれでもいい p Any型 p
なんでもいい p object を指定するのは object が持っている属性しか 使えなくなるからダメ p (単純な)generator 10 警告 警告
実は……PyCharmなら昔からできました 11 PyCharm独⾃の docstringによる型アノテーション https://www.jetbrains.com/help/pycharm/2017.1/type-hinting-in-pycharm.html#legacy
実は……PyCharmは単純な型推論もできます 12 アノテーションなしで 型推論してる
型アノテーションの歴史 p Python3.0〜 (Function Annotations) p メソッド定義の引数と返り値の型アノテーションの追加 p Python3.5〜 (Type
Hints) p typing モジュール (ジェネリクス/型変数/型エイリアス/Any/Union/Optional/etc …) p Python3.6〜 (Variable Annotations) p 変数アノテーション 13
Variable Annotations(Python3.6) p 変数の型アノテーション p ⼀度これを書いてしまうと3.5以前では実⾏できない p 後⽅互換性を壊してまで書く気はしないなぁ 14 変数名:
型 = 値 オブジェクト.属性: 型 = 値
Variable Annotations(Python3.6) p クラススタイル NamedTuple 型付き版 15 ※タプルの各要素に 添え字ではなくて 名前でアクセス
できるようになる ※他にもいろいろ
Variable Annotations(Python3.6) p クラススタイル NamedTuple 型付き版 16