Python デコレータを使用する

Jan 19 2023
デコレーターは、コードを変更せずに既存の関数やクラスに機能を追加するために使用できる強力なツールです。これらはロギング、キャッシュ、検証などのタスクに使用でき、コードを整理して保守しやすく保つのに役立ちます。

デコレーターは、コードを変更せずに既存の関数やクラスに機能を追加するために使用できる強力なツールです。これらはロギング、キャッシュ、検証などのタスクに使用でき、コードを整理して保守しやすく保つのに役立ちます。

それで...デコレータとは何ですか?

デコレーターは、別の関数を引数として受け取り、新しい関数を返す特別なタイプの関数です。新しい関数は通常、元の関数の修正バージョンであり、機能を追加するためによく使用されます。

使い方は?

デコレータを関数またはクラスに適用するには、関数またはクラス定義の前に「@」記号の後にデコレータ関数名を置きます。

以下は、関数にロギング機能を追加する単純なデコレータの例です。

def log_decorator(func):
    def wrapper(*args, **kwargs):
        print("Calling function:", func.__name__)
        result = func(*args, **kwargs)
        print("Function returned:", result)
        return result
    return wrapper

@log_decorator
def my_function(x, y):
    return x + y

my_function(1, 2)

このコードの出力は次のようになります。

Calling function: my_function
Function returned: 3

線量デコレーターは値を取得できますか?

はい!デコレータに引数を非常に簡単に渡すこともできます

def repeat(num):
    def repeat_decorator(func):
        def wrapper(*args, **kwargs):
            for i in range(num):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return repeat_decorator

@repeat(num=3)
def my_function(x):
    return x * x

print(my_function(3))

覚えて?

デコレータは、別の関数を引数として受け取り、機能を追加するために使用される新しい関数 (通常は元の関数の修正バージョン) を返す特別なタイプの関数です。これらは、関数またはクラス定義の前に「@」記号の後にデコレータ関数名を置くことによって、関数またはクラスに適用されます。また、引数を受け取ってデコレータの動作をさらにカスタマイズすることもできます。

頑張れシロ