PYTHON MEBY

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 は、コールバック関数を非同期的に実行する便利な方法です。

関連記事