SlideShare a Scribd company logo
Python3.9におけるtype hints
みんなのPython勉強会#62
2020/10/14@オンライン
あっきー
自己紹介
2
● 京都のIT会社で働いてます
● 業務では主に、AWS、Openblocks、SORACOM
などを使ってサービスを提供してます
● PythonはAWS Lambdaでバリバリ書いてます
最近は少しフロントエンドの開発にも慣
れてきました
来たる10月5日
Python 3.9リリース🎉🎉🎉
ところで、みなさん
45
この数字、何の数字かわかりますか?
正解はtypingのページ内を「3.9」で
検索した結果の数字です
みんなのPython勉強会#62
3.9におけるtype hintsの一番の目玉である
「Type Hinting Generics In Standard Collections」
について話します
そもそも何が問題だったの?
Pythonには組み込み型(listなど)と型として表現されるtyping(Listなど)の2種類が
存在しており、一部の役割が重なっており混乱を招いた
下記のコードの場合は、どちらも同じ意味になる
で、どう変わったの?
組み込み型にtypingが持っていた機能を持たせることで、今後は組み込み型に統一
する方向に決まった
具体的には組み込み型(listなど)にジェネリクス型として利用できるようになった
(詳細は後述)
そもそもlistとListって何が違うの?
listは組み込み型なのでインスタンスを作成することができる
Listは型クラスなのでインスタンスを作成することはできない
そもそもlistとListって何が違うの?
listはGenerics型として利用できなかった(Python 3.8以前)
ListはGenerics型として利用できる
そもそもGeniricsってなに?
Genericsとはより汎用的な型を定義するための仕組み
事前に型を定義するのではなく、実行時に型が決まる仕組み
NGコード
こんなコードは嫌ですよね、、、
そもそもGeniricsってなに?
Genericsとはより汎用的な型を定義するための仕組み
事前に型を定義するのではなく、実行時に型が決まる仕組み
OK?コード
こっちの方が断然いい
Generics型使ってみる
内容は分かったけど
Generics使う機会あるん?
たぶんほとんどありません
Union、Optionalで事足りることがほとんどですし、
下手にGenerics使うと型の制約が緩くなるので逆効果に、、、
よほどの汎用的な仕組みでない限り、(今回のアップデートのlistみたいな)
使う機会ないかも
ところで、3.9のlist使ってみた感じ
どうなん?
mypyはまだ対応してないので大量のエラーがでます
Implement PEP 585 (Generic builtins and __future__.annotations) #7907
Pyrightは対応しているので個人的にはそちらの利用を推奨
これまでlistでもListでも同じ意味で利用可能だったので混乱を招いていたので、統一す
るのは分かりやすいと思う
(が、listに統一させたのはちょっと賛成できないかも、、、 )

More Related Content

PDF
Python2と3の互換性問題に立ち向かうときにまずやること
PPTX
Tfug kansai vol1
PDF
Python と型ヒント (Type Hints)
PPTX
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会
PDF
Django から各種チャットツールに通知するライブラリを作った話
PDF
Pythonと型チェッカー
PPTX
Microsoft Learn で C# を学ぶとどんな感じ?
PDF
今日からはじめるHTML5 ver.2012
Python2と3の互換性問題に立ち向かうときにまずやること
Tfug kansai vol1
Python と型ヒント (Type Hints)
.NET micro FrameWork for TOPPERS (.NET基礎)@基礎勉強会
Django から各種チャットツールに通知するライブラリを作った話
Pythonと型チェッカー
Microsoft Learn で C# を学ぶとどんな感じ?
今日からはじめるHTML5 ver.2012

What's hot (14)

PDF
.NET系開発者から見たJava
PPTX
Rの基礎(データ型とデータ構造)
PDF
20170131 python3 6 PEP526
PDF
D言語にまだ入っていない新機能 (Dの日#2)
PDF
プログラミング・パラダイム
PDF
静的型付け言語Python
PDF
L-1グランプリ "D言語"
PPTX
Python と型アノテーション
PPTX
Getting Started with Graph Database with Python
PDF
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
PDF
Goとテスト
PDF
Define and expansion of cpp macro
PDF
水素原子に対するSchrödinger方程式の数値解法
PDF
SchracVisualizeによる波動関数の可視化
.NET系開発者から見たJava
Rの基礎(データ型とデータ構造)
20170131 python3 6 PEP526
D言語にまだ入っていない新機能 (Dの日#2)
プログラミング・パラダイム
静的型付け言語Python
L-1グランプリ "D言語"
Python と型アノテーション
Getting Started with Graph Database with Python
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goとテスト
Define and expansion of cpp macro
水素原子に対するSchrödinger方程式の数値解法
SchracVisualizeによる波動関数の可視化
Ad

More from hiroya akita (11)

PDF
KyotoLT_Online_27.pdf
PDF
はんなりPython #45
PDF
Python 3.10の新機能を 俯瞰してみる
PDF
KyotoLT(Online) 第26回
PDF
AppSync導入のすすめ
PDF
はんなりpython#32
PPTX
Hannari python#27
PPTX
変数の重要度ってどうやったらわかるん?
PPTX
みんなのはんなりPython勉強会
PPTX
Pythonでも型をつけたいだけの人生だった
PPTX
Lt debian 20190526
KyotoLT_Online_27.pdf
はんなりPython #45
Python 3.10の新機能を 俯瞰してみる
KyotoLT(Online) 第26回
AppSync導入のすすめ
はんなりpython#32
Hannari python#27
変数の重要度ってどうやったらわかるん?
みんなのはんなりPython勉強会
Pythonでも型をつけたいだけの人生だった
Lt debian 20190526
Ad

みんなのPython勉強会#62