1 2 | def handler( func, *args ): return func(*args) |
上記のように、関数ポインタは関数名をそのまま記述すればよいです。 引数は、アスタリスクを変数名の先頭につければ、それが可変長リストの 扱いになり、funcの引数として扱われます。
上記のように定義したハンドラを使って、以下異なる2つの関数をハンドラに登録してみます。
1 2 3 4 5 6 7 8 9 10 | def printhoge(istr): print "hoge is %s" % istr def printhogehoge(istr1, istr2): print "hoge is %s and %s" % ( istr1, istr2 ) if ( __name__ == "__main__" ): handler( printhoge, "hage" ) handler( printhogehoge, "hage", "huga" ) |
この技術をベースにすると、いろんなコールバック方式の関数処理が実現できて便利ですよ。