組み込み開発のためのPython · レッスン 212 / 220

型注釈・docstring・静的解析

関数の契約を型注釈と説明に記し、実行前に見つけられる誤りを減らします。

型注釈は実行時の強制ではありませんが、関数が受け取り返す値を共有し、エディターや型チェッカーで誤りを早く見つける助けになります。

型はデータの流れを説明する

引数や戻り値に型を付けると、バイト列を返す関数に文字列を渡すような間違いを静的に検出しやすくなります。`None`があり得る場合や、複数形式を受け取る場合は、その可能性を型に表します。型を付けただけで入力検証が済んだと考えないでください。

docstringには契約と単位を書く

docstringには何をする関数か、引数の単位、例外条件、戻り値の意味を記します。コードを読めば分かる説明を重ねるより、タイムアウトの基準やプロトコル上の前提など、呼び出し側が判断するための情報を残します。静的解析とテストを組み合わせて、変更時に確認します。

コード例

手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。

def within_limits(value_mv: int, lower_mv: int, upper_mv: int) -> bool:
    """電圧値が両端を含む許容範囲内かを返す。"""
    if lower_mv > upper_mv:
        raise ValueError("下限は上限以下で指定してください")
    return lower_mv <= value_mv <= upper_mv

assert within_limits(3300, 3000, 3600)

手を動かす課題

関数に単位と境界条件を記したdocstringを加え、誤った引数型や順序を型チェッカー・テストで検出しましょう。

参考資料

「6. 型・クラス・データ処理の設計」の章一覧へ