Python: コールバック関数

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

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

ひとまず,コールバック関数をarithmetic.pyに保存.

# 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

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

# 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)

上記のコードを実行すると,以下のように出力される.
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

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s