def decorator_function(arg1, arg2):
def decorator_wrapper(func):
def wrapper(*args, kwargs):
# デコレータ関数の前処理
print(f"Decorator arguments: {arg1}, {arg2}")
# デコレータ関数が修飾する関数の実行
result = func(*args, kwargs)
# デコレータ関数の後処理
print("Decorator cleanup")
return result
return wrapper
return decorator_wrapper
@decorator_function("arg1_value", "arg2_value")
def decorated_function():
print("Hello, world!")
decorated_function()
上記のコードでは、decorator_function
というデコレータ関数を定義し、arg1
と arg2
を引数として受け取ります。このデコレータ関数は、decorated_function
という関数を修飾します。
decorator_function
は、decorator_wrapper
という関数を内部で定義し、これが実際にデコレータとして機能します。decorator_wrapper
関数は、func
という引数として修飾する関数を受け取ります。そして、wrapper
関数を定義して返します。
wrapper
関数は、デコレータ関数の前処理、修飾する関数の実行、および後処理を行います。具体的な処理はコード内に記述されています。
@decorator_function("arg1_value", "arg2_value")
のように、デコレータ関数を使って decorated_function
を修飾することができます。この場合、デコレータ関数には引数として "arg1_value"
と "arg2_value"
を渡します。
上記のコードを実行すると、以下の出力が得られます。
Decorator arguments: arg1_value, arg2_value
Hello, world!
Decorator cleanup
これにより、デコレータ関数が修飾する関数の前後に特定の処理を追加することができます。デコレータ引数を使用することで、デコレータの動作を柔軟にカスタマイズすることができます。
このように、デコレータ関数とデコレータ引数は、Pythonで再利用可能なコードを作成するための強力なツールです。