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
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
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
160
Amazon ECS & AWS Fargate 運用アーキテクチャ2025 / Amazon ECS and AWS Fargate Ops Architecture 2025
iselegant
16
5.5k
AIエージェント最前線! Amazon Bedrock、Amazon Q、そしてMCPを使いこなそう
minorun365
PRO
14
5.1k
_第3回__AIxIoTビジネス共創ラボ紹介資料_20250617.pdf
iotcomjpadmin
0
150
Welcome to the LLM Club
koic
0
170
Model Mondays S2E02: Model Context Protocol
nitya
0
220
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
290
Wasm元年
askua
0
140
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
2
1k
Fabric + Databricks 2025.6 の最新情報ピックアップ
ryomaru0825
1
130
AIのAIによるAIのための出力評価と改善
chocoyama
2
550
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
3
1.2k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
Raft: Consensus for Rubyists
vanstee
140
7k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Designing for humans not robots
tammielis
253
25k
Agile that works and the tools we love
rasmusluckow
329
21k
The Invisible Side of Design
smashingmag
299
51k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
How GitHub (no longer) Works
holman
314
140k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Art, The Web, and Tiny UX
lynnandtonic
299
21k
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