Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python の型事情について

biwakonbu
September 08, 2023

Python の型事情について

Python 3.10 の型ヒント機能をベースに Python で型を扱う話をしています。
全部をガッツリやる話ではなく、これから型を意識したいという人や、Python を最近書き始めた人向けの内容になります。

biwakonbu

September 08, 2023
Tweet

More Decks by biwakonbu

Other Decks in Technology

Transcript

  1. 自己紹介 1 株式会社 coroutine 東川 諒央 @biwakonbu 大学教員 ゲームバックエンド フリーランス

    経歴 Go Python JavaScript 実績言語 Ruby 技術顧問 エンジニア教育 業務 設計 プログラミング インフラ etc… Rust Haskell TypeScript 学習中言語
  2. Python の型とは? 2 ❏ Python は動的型の言語 ❏ じゃあ TypeScript みたいにコンパイル時チェックでバグを抑制できないのか

    ? ❏ これは出来ます ❏ Python ではバージョン 3.5 から型ヒント (type hint) というものが実装されました ❏ 現時点では 3.11 が最新の安定版 ❏ 3.5 ~ 3.11 まででかなり内容が変更されているので 注意 ❏ 型ヒントというのは、ヒントであって強制ではない事にも 注意 ❏ Python で型ヒントを扱うためのライブラリを使う事で型検査が出来る
  3. 型ヒントを使う 3 ❏ IDE, エディタ で使う ❏ LSP に対応したプラグインを導入する事でエディタ上で型検査ができる ❏

    VSCode なら Pylance を使いましょう ❏ MS 謹製の拡張です ❏ 静的解析ツールを使う ❏ Mypy ❏ Python 型検査のデファクトスタンダード ❏ 最新の 1.5 は Python 3.12 を部分的にサポート ❏ pytype ❏ 型アノテーションが無くても型推論によって検査できる ❏ 型注釈を Python ソースに組み込む事も可能 ❏ 最新は Python 3.8 ~ 3.10 までサポートとの事
  4. Python 3.10 の型ヒント事情 3 ❏ typing --- 型ヒントのサポート — Python

    3.10.12 ドキュメント ❏ 公式ドキュメントで詳細は確認できるので特筆したいものを紹介します
  5. Python が TypeScript に近くなっている 5 ❏ 紹介した機能は TS でも良く使われる機能 ❏

    ジェネリクス、リテラル型、ユニオン型、 Final、TypeGuard など ❏ バージョンが上がる毎に便利で typing モジュールなしになってきている ❏ 非常に便利で強力な機能だけど、便利に使うには参考書が欲しい ❏ ロバスト Python を読みましょう!
  6. まとめ 6 ❏ Python は年々見え難い部分が進化しています ❏ 型周りは Python が力を入れているので習熟が今後重要になると思います ❏

    既存の PJ には pytype の導入が良さそうです ❏ 新規なら Mypy だと細かくできますが、面倒なら pytype でも可 ❏ Pyre (パイヤー) という OCaml 製の静的型解析ツールが気になっています ❏ 本当はここの話をしたかったけど話したい内容が多かったので次回にします ❏ Python 3.12 では typing モジュールの利用を更に減らす施策が入ります ❏ type キーワードが入り、ますます TS チックになります ❏ 構文や解析周りの進化が本当に激しいのでこれからの発展に期待しましょう