Pythonで関数をデコレータで装飾する方法は何ですか?
Pythonにおいて、デコレーターは、関数を受け取り、新しい関数を返す関数の一種です。デコレーターを使うことで、元の関数のコードを変更せずに追加機能やロジックを追加することができます。
以下是一个简单的示例,展示了如何使用装饰器来装饰函数:
# 定义一个装饰器函数
def my_decorator(func):
def wrapper():
print("Before calling the function")
func()
print("After calling the function")
return wrapper
# 使用装饰器来装饰函数
@my_decorator
def say_hello():
print("Hello!")
# 调用装饰后的函数
say_hello()
上記の例では、my_decoratorはデコレーター関数であり、関数を引数として受け取り、新しい関数wrapperを返します。wrapper関数では、元の関数を呼び出す前後に追加のロジックを追加できます。say_hello関数の上に@my_decorator構文を追加することで、say_hello関数をmy_decoratorデコレーター関数に渡し、返された新しい関数をsay_helloに代入することで、say_hello関数がデコレートされます。
say_hello関数を呼び出すと、実際にはデコレートされたwrapper関数が呼び出され、”Hello!”を印刷する前と後にそれぞれ”関数を呼び出す前”と”関数を呼び出した後”が印刷されます。このようにして、関数を成功裏にデコレートすることができました。