投稿

[今さら始める Python マスター #10] デコレータとジェネレータ

Pythonのデコレータとジェネレータを使って、処理の共通化とメモリ効率のよい反復処理を学びます。

[今さら始める Python マスター #10] デコレータとジェネレータ

デコレータとは

デコレータは、関数の前後に共通処理を追加する仕組みです。

1
2
3
4
5
6
7
8
9
10
11
def log_call(func):
    def wrapper(*args, **kwargs):
        print("start")
        result = func(*args, **kwargs)
        print("end")
        return result
    return wrapper

@log_call
def greet():
    print("hello")

ログ、認証、計測などでよく使われます。

ジェネレータとは

ジェネレータは、値を一つずつ返す反復処理です。大量データを一度にメモリへ載せたくないときに便利です。

1
2
3
def count_up():
    for i in range(3):
        yield i

yield

yieldは値を返しつつ、関数の状態を保持します。次に呼ばれたとき、続きから実行されます。

今日のゴール

デコレータは処理の共通化、ジェネレータは効率的な反復処理に役立ちます。最初は小さな例で動きを確認しましょう。

この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。