🔙

Pythonコールバック関数の型アノテーション

2024/09/28に公開

Pythonコールバック関数の型アノテーション

非同期処理でよく使用されるコールバック関数のPythonでの型アノテーションをどのようにするかを調べたのでその備忘録

関数の型アノテーション

typingモジュールを使用する。
標準ライブラリーなので使いたいところでインポートするだけ

from typing import Callable

型はCallableになる。

def execute(input_arg: str, f: Callable):
    val = input_arg + "hoge"
    callback(val)

コールバック関数というか、引数として関数を渡す際の型アノテーションとしてはこれだけで十分
この関数の引数と返り値の型を定義したいと思うと以下のようになる

# Callable[[引数の型, 引数の型, ...], 返り値の型]

def execute(input_arg: str, f: Callable[[int, str], str]):
    val = input_arg + "hoge"
    ret = f(1, val)

別にCallback関数のためにある型アノテーションではないので返り値の型も指定できるが、Callback関数として使う場合に返り値の型を指定することは無いと思う。
その場合はNoneを入れておけば良い、何も書かないとエラーになるの注意

効果

IDEや高機能なエディタで補完を使う際に候補が出てくるようになる

参考

https://mypy.readthedocs.io/en/stable/additional_features.html#extended-callable-types

Discussion