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
32
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
0
Python 実行環境の話 2024
quintia
0
13
Python 実行環境の話
quintia
0
26
裏切られる直感と、確率と精度のはなし
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
Bliki (ja), and the Cathedral, and the Bazaar
koic
5
700
SREのためのeBPF活用ステップアップガイド
egmc
2
1.4k
三視点LLMによる複数観点レビュー
mhlyc
0
250
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
18k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
39k
AI時代にも変わらぬ価値を発揮したい: インフラ・クラウドを切り口にユーザー価値と非機能要件に向き合ってエンジニアとしての地力を培う
netmarkjp
0
170
20250719_JAWS_kobe
takuyay0ne
1
120
20250718_ITSurf_“Bet AI”を支える文化とコストマネジメント
helosshi
0
120
MCP とマネージド PaaS で実現する大規模 AI アプリケーションの高速開発
nahokoxxx
1
910
スプリントゴール未達症候群に送る処方箋
kakehashi
PRO
1
120
今だから言えるセキュリティLT_Wordpress5.7.2未満を一斉アップデートせよ
cuebic9bic
2
180
How Do I Contact Jetblue Airlines® Reservation Number: Fast Support Guide
thejetblueairhelpsupport
0
190
Featured
See All Featured
KATA
mclloyd
30
14k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Done Done
chrislema
184
16k
4 Signs Your Business is Dying
shpigford
184
22k
For a Future-Friendly Web
brad_frost
179
9.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Gamification - CAS2011
davidbonilla
81
5.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
108
19k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
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