Python 関数に関数を渡す(高階関数)

スポンサーリンク

Pythonでは関数に関数を渡したり、関数を変数に代入したりできます。

関数を引数で受け取って処理する関数を「高階関数」といいます。

今回は、Pythonの高階関数の使い方として、関数に関数を渡す方法を解説します。

関数に関数を渡す(高階関数)

関数に関数を渡す

def convert_type(num, type):
    if type == 16:
        # 16進数に変換する
        return hex(num)
    elif type == 2:
        # 2進数に変換する
        return bin(num)

関数「convert_type」を定義しました。これは受け取った数値「num」を型「type」に変換します。

中身を確認すると、10進数を16進数・2進数に変換する関数ですね。

def convert_hex(func, num):
    return func(num, 16)

関数「convert_hex」の第一引数「func」は関数です。

関数の引数に関数「func」を設定しました。関数内で別の関数「func」を実行します。

これが「高階関数」です。

convert_hex(convert_type, 100)
#[結果] 0x64

先ほど設定した高階関数「convert_hex」を実行しました。第一引数には「convert_type」関数を指定しました。ここでも関数に関数をわたしていますね。

高階関数を使って、10進数「100」を16進数「64」に変換することができました。

関数に関数を渡すまとめ

これまでをまとめます。

def 関数A
    処理

def 関数B(関数A)
    関数A

# 実行
関数B(関数A)

このように関数Bに関数Aを渡して実行しました。Pythonでは関数でもオブジェクトの1つなので、このように関数を渡すこともできます。

以上、Pythonで関数に関数を渡す(高階関数)方法でした。

コメント