I am Charmie

メモとログ

Python: コールバック関数

関数の引数として呼ぶ関数をコールバック関数と呼ぶ.

C, C++と違い,Pythonのコールバック関数を使うのは非常に簡単ということが分かった.

ひとまず,コールバック関数をarithmetic.pyに保存. [code lang="python"]

arithmetic.py

def add(a, b): return a + b

def sub(a, b): return a - b

def mul(a, b): return a * b

def div(a, b): return a / b

def add_3(a, b, c): return a + b + c [/code]

コールバック関数を呼び出すためには,関数ハンドラを定義して,関数ハンドラを通してコールバック関数を呼び出す. [code lang="python"]

call_arithmetic.py

import itertools from arithmetic import add, sub, mul, div, add_3

def handler(function, arguments): print ' ', function.name, ':', function(arguments)

def iterate_function(function): for a,b in itertools.product(xrange(5), xrange(3)): handler(function, a, b)

if name == "main": print 'call each callback function' a = 10 b = 3 c = 1

handler(add, a, b)
handler(sub, a, b)
handler(mul, a, b)
handler(div, a, b)
handler(add_3, a, b, c)

print 'give a callback function to another function as an argument'
iterate_function(add)

[/code] 上記のコードを実行すると,以下のように出力される. call each callback function add : 13 sub : 7 mul : 30 div : 3 add_3 : 14 give a callback function to another function as an argument add : 0 add : 1 add : 2 add : 1 add : 2 add : 3 add : 2 add : 3 add : 4 add : 3 add : 4 add : 5 add : 4 add : 5 add : 6