問題
9singledispatchで型分岐する方法
singledispatch は、Pythonの functools モジュールに含まれるデコレータで、引数の型に応じて自動的に処理を切り替える機能です。
Pythonで関数の型分岐を実装する場合、通常は if isinstance() を使って書く必要があります。
しかし、singledispatch を使うことで、Python 関数の型ごとの処理をよりシンプルで拡張しやすいコードで書けます。
Pythonの問題に挑戦しよう!
問題
「singledispatchで型分岐する方法」
singledispatch を使って、引数の型ごとに異なる処理を行う関数 f を作成してください。
あらかじめエディタに書くコード
# ここにコードを書いてください
解答と解説(singledispatchで型分岐する方法)
解説
※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます
singledispatch は、引数の型によって処理を切り替えるデコレータです。
@singledispatch でベース関数を定義し、@f.register(型) で型ごとの処理を追加します。どの型にも一致しない場合はベース関数が実行されます。
通常のPythonでは同じ関数名に複数の処理を持たせられないため、型ごとの分岐は if isinstance() で書く必要があります。singledispatch を使うことで、型ごとの処理を別々の関数として定義できるため、コードの見通しが良くなり、後から型を追加する際も既存のコードに手を加えずに済みます。
登録できる型はいくつでも追加でき、int・str・list など異なる型に対してそれぞれ異なる処理を定義することが可能です。
補足
singledispatch は functools モジュールに含まれており、他にも便利な機能があります。
合わせて挑戦してみよう!
・問題8:functools.partial
・問題4:関数デコレータ
Pythonの基礎から学びたい人はPython入門講座もチェック!
ポイント
singledispatchとは
singledispatch は、Python で関数の型分岐を実現する仕組みです。
通常のPythonでは同じ関数名に複数の処理を持たせられないため、型ごとの分岐は if isinstance() で書く必要があります。
singledispatch を使うことでコードの見通しが良くなり、拡張もしやすくなります。