Pythonでコールバック関数を使う
この記事では、Pythonにおけるコールバック関数の使用方法について解説します。コールバック関数とは何か、具体的な使用方法、そして実践的な例を通して理解を深めます。
目次
コールバック関数とは?
コールバック関数とは、ある関数が処理を完了した後に、自動的に実行される関数のことです。 イベント発生時や非同期処理の完了時に、後続処理を実行するために使用されます。
他の関数に渡され、その関数の中で呼び出されます。引数として渡された関数、または関数オブジェクトのことを指します。
def my_callback(result):
print(f"処理結果: {result}")
def my_function(callback):
result = 10 * 2
callback(result) # コールバック関数を呼び出す
my_function(my_callback)
コールバック関数の基本的な使い方
コールバック関数は、引数として他の関数に渡されます。
def callback_function(x):
print(f"コールバック関数実行中: {x}")
def main_function(callback, value):
print("メイン関数実行中...")
callback(value)
print("メイン関数終了")
main_function(callback_function, 5)
main_function は callback_function を引数として受け取り、関数内で実行します。
イベントハンドリングにおけるコールバック関数
GUIプログラミングや、イベント駆動型のシステムでは、ボタンクリックやデータ更新などのイベント発生時にコールバック関数が使用されます。
イベントが発生すると、事前に登録されたコールバック関数が自動的に実行され、イベントに応じた処理を実行します。
高度な使用方法:デコレータとコールバック関数
デコレータと組み合わせることで、コールバック関数の登録や実行をより簡潔に記述できます。
def register_callback(func):
def wrapper(*args, **kwargs):
print("コールバック関数を登録しました")
func(*args, **kwargs)
return wrapper
@register_callback
def my_callback():
print("コールバック関数を実行")
my_callback()
実践例:タイマーを使ったコールバック
threading モジュールを使って、一定時間後にコールバック関数を呼び出す例です。
import threading
import time
def my_callback():
print("タイマーが切れました!")
timer = threading.Timer(5, my_callback) # 5秒後にmy_callbackを実行
timer.start()
print("タイマー開始...")
time.sleep(6) # プログラムを6秒間実行し続ける
このコードは、5秒後にmy_callback関数を呼び出します。threading.Timer は、コールバック関数を非同期的に実行する便利な方法です。