重複の可能性:
Python デコレータを理解する
これを見つけたdjangoアプリのソースコードを読んでいました
@login_required
def activities(request = None,\
project_id = 0,\
task_id = 0,\
...
@で始まる行はどういう意味ですか?
重複の可能性:
Python デコレータを理解する
これを見つけたdjangoアプリのソースコードを読んでいました
@login_required
def activities(request = None,\
project_id = 0,\
task_id = 0,\
...
@で始まる行はどういう意味ですか?
デコレータです。それが行うことは、基本的に関数をラップすることです。次のコードと同等です。
def activities(request = None,\
project_id = 0,\
task_id = 0,\
...
activities = login_required(activities)
これは、関数の引数 (この場合はrequest.session
) のチェック、引数の変更 (関数が渡す以外の引数を関数に与える場合があります)、およびおそらくその他のものに使用されます。
これは、別の関数の動作を変更する Python の特別なタイプの関数 (場合によってはクラス) であるデコレータです。この記事を参照してください。
@decorator
def my_func():
pass
は、実際には特別な構文です
def my_func():
pass
my_func = decorator(my_func)
Python Decorators Explainedを参照してください。すべてを説明する驚くべき答えがあります。
デコレータです。これは、次のシンタティック シュガーです。
def activities(request = None,\
project_id = 0,\
task_id = 0,\
...
activities = login_required(activities)