【Python】入れ子になったタプルの型ヒントの書き方

本記事はPythonの型ヒントの書き方に関する記事です.
入れ子の構造になっているタプルの型ヒントの書き方についてまとめています.

タプルの型ヒント

タプルを定義し,定義したタプルを引数に取る関数を作成しています.
(関数の機能としてはfor文でタプルから値を取得して出力するだけです)


from typing import Tuple

t1 = ('えび', 'かに', 'ほたて')

def t1_func(t1: Tuple[str, str, str]) -> None:
    for t in t1:
        print(t)

t1_func(t1)
えび
かに
ほたて

型ヒントはTuple[str, str, str]です.
引数として与えられるタプル(今回は変数t1)の構造を書いています.

参考

この関数に戻り値はないので,戻り値の表記はNone(戻り値なし)を指定しています.

省略形

タプルの値が同じデータ型の場合は省略した表記をすることも可能です.
省略した型ヒントの例は以下の関数です.


t2 = (('哺乳類', ('馬', '牛')), ('魚類', ('マグロ', 'イトウ')))

def t2_func(t2: Tuple[Tuple[str, Tuple[str, str]], ...]) -> None:
    for category, animals in t2:
        for animal in animals:
            print(category, animal)
t2_func(t2)
哺乳類 馬
哺乳類 牛
魚類 マグロ
魚類 イトウ

いきなり複雑になりましたが,タプルの入れ子構造を表現しているだけです,
()の範囲を確認するとよくわかります.

なおTuple[Tuple[str, Tuple[str, str]], ...], ...部分は同じ構造が複数並ぶためその略記です.

型ヒントは慣れるとわかりやすいのですが,上記のように複雑な場合であれば微妙ですよね.

ひとこと

複雑な関数には型ヒントをつけておくと読みやすいです.
mypy1を使いながら適宜チェックすると尚良ですね.

関連記事

mypyや型ヒントに関連する記事はこちらです.


  1. 型ヒントの記法をチェックする外部ライブラリ