Pythonでは、デコレータを使って関数の振る舞いを変更したり拡張したりすることができます。しかし、デコレータに引数を渡す方法は一見複雑に見えるかもしれません。この記事では、Pythonで引数を取るデコレータを作成する方法について説明します。
デコレータとは
Pythonのデコレータは、他の関数の機能を変更したり拡張したりするための機能です。デコレータは、修正したい関数の上に @decorator_name
という形式で追加します。
def my_decorator(func):
def wrapper():
print("start")
func()
print("end")
return wrapper
@my_decorator
def say_hello():
print("hello")
say_hello()
上記のコードを実行すると、以下のような出力が得られます。
start
hello
end
@my_decorator
はPythonの糖衣構文で、 say_hello
関数を my_decorator
関数の引数として渡すことができます。簡単に言うと、 @my_decorator
は say_hello = my_decorator(say_hello)
と同じです。
引数を取るデコレータの作成
引数を取るデコレータを作成するには、デコレータ関数の外側にさらに関数を追加します。この外側の関数は、デコレータに渡す引数を受け取り、内側のデコレータ関数を返します。
def decorator_with_args(arg1, arg2):
def my_decorator(func):
def wrapper():
print("start")
func(arg1, arg2)
print("end")
return wrapper
return my_decorator
@decorator_with_args("hello", "world")
def say_something(arg1, arg2):
print(arg1, arg2)
say_something()
上記のコードを実行すると、以下のような出力が得られます。
start
hello world
end
このように、Pythonのデコレータを使って関数の振る舞いを柔軟に変更することができます。引数を取るデコレータを理解し、適切に使用することで、Pythonプログラミングの幅が広がります。
以上、Pythonで引数を取るデコレータの作り方についての説明でした。この情報があなたのPythonプログラミングに役立つことを願っています。