#コールバック関数って?
コールバック関数とは、プログラム中で、呼び出し先の関数の実行中に実行されるように、あらかじめ指定しておく関数。
http://e-words.jp/w/%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E9%96%A2%E6%95%B0.html
関数の引数として渡す関数とも説明されることもあります。
#使用方法
リンク先の記事まんまです
http://qiita.com/pocket8137/items/df5afba90b51e90587a5
まずはコールバック関数を呼び出す関数を定義。
def handler(func,*args):
return func(*args)
第一引数が関数ポインタ、第二引数が可変引数です。第二引数にてコールバック関数の引数を受け取ります。
そして、コールバック関数を定義
def say_hello(name):
print("Hello!!")
print(name)
呼び出します。
ちなみに、Pythonでは関数名に()をつけないことで関数ポインタを指します。
if __name__ == "__main__":
callback = say_hello
#callbackにsay_helloのオブジェクトIDを格納
handler(callback, "moroku0519")
実行結果
Hello!!
moroku0519
#どういったことに使ったか
私の場合、場合によって使用する関数を分けたいなと思う場面がありました。
そこで、オブジェクトIDを格納した辞書を定義しました。
def handler(func, *args):
return func(*args)
def function1(hoge):
return hoge
def function2(hoge, huga):
return hoge, huga
func_dic = {"func1": function1, "func2": function2}
result1 = handler(func_dic["func1"], hoge)
result2, result3 = handler(func_dic["func2"], hoge, huga)