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
34
Python Type Annotation
K Yamaguchi
May 19, 2017
Tweet
Share
More Decks by K Yamaguchi
See All by K Yamaguchi
Coding in Color
quintia
0
2
Python 実行環境の話 2024
quintia
0
19
Python 実行環境の話
quintia
0
30
裏切られる直感と、確率と精度のはなし
quintia
0
67
Apache Spark Tutorial
quintia
0
14
No Error Conversion of Floating Points
quintia
0
19
Other Decks in Technology
See All in Technology
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
350
Azure Well-Architected Framework入門
tomokusaba
1
130
re:Inventに行くまでにやっておきたいこと
nagisa53
0
460
AI時代におけるデータの重要性 ~データマネジメントの第一歩~
ryoichi_ota
0
720
知覚とデザイン
rinchoku
1
600
AI時代の発信活動 ~技術者として認知してもらうための発信法~ / 20251028 Masaki Okuda
shift_evolve
PRO
1
100
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
330
Observability — Extending Into Incident Response
nari_ex
1
510
IoTLT@ストラタシスジャパン_20251021
norioikedo
0
140
NLPコロキウム20251022_超効率化への挑戦: LLM 1bit量子化のロードマップ
yumaichikawa
3
520
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
0
310
頭部ふわふわ浄酔器
uyupun
0
110
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Docker and Python
trallard
46
3.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
A better future with KSS
kneath
239
18k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
KATA
mclloyd
PRO
32
15k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
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