Pythonのアクセサリー'@'記号

972 ワード

Pythonでは、すべてが対象です.これは、辞書の値、リストのアイテム、または別のオブジェクトのプロパティであり、パラメータとして高次関数に渡すことができることを意味します.
def function_decorator(func):
    def wrapper():
        # do something
        func()
        # do something
    return wrapper

def function():
    print('I\'m a normal function.')

function = function_decorator(function)

function()

ここでfunctionを入力し、新しいwrapperに戻ります.wrapperではfunctionが呼び出されます.そうしないと、装飾器を使う必要はありません.
以上の
decorated_function = function_decorator(function)

Pythonでは、より直感的で簡単に見える特定の文法が提供されています.
def function_decorator(func):
    def wrapper():
        # do something
        func()
        # do something
    return wrapper

@function_decorator
def function():
    print('I\'m a normal function.')

# decorated_function = function_decorator(function)

function()

@function_を1つ使用直接呼び出しdecoratorに代わってdecorated_function = function_decorator(function)
これで