baris python yang dimulai dengan @ [duplikat]

Kemungkinan Duplikat:
Memahami dekorator Python

Saya sedang membaca kode sumber aplikasi Django di mana saya menemukan ini

@login_required
def activities(request = None,\
            project_id = 0,\
            task_id = 0,\
            ...

Apa arti baris yang dimulai dengan @?


person Augie    schedule 15.07.2011    source sumber
comment
stackoverflow.com/questions/739654/   -  person Andreas Jung    schedule 15.07.2011
comment
Memberi +1 karena ini pertanyaan yang valid, karena Anda tidak tahu, bahwa Anda harus mencari dekorator saat pertama kali melihat simbol @.   -  person Framester    schedule 23.04.2015
comment
Juga duplikat yang tepat adalah stackoverflow.com/questions/6392739/   -  person Framester    schedule 23.04.2015


Jawaban (4)


Silakan lihat Penjelasan Dekorator Python. Ini memiliki jawaban luar biasa yang akan menjelaskan segalanya.

person TorelTwiddler    schedule 15.07.2011

Itu adalah dekorator. Apa yang dilakukannya pada dasarnya adalah membungkus fungsinya. Ini setara dengan kode ini:

def activities(request = None,\
            project_id = 0,\
            task_id = 0,\
            ...
activities = login_required(activities)

Ini digunakan untuk memeriksa argumen fungsi (dalam hal ini request.session), memodifikasi argumen (mungkin memberikan fungsi argumen lain selain yang diteruskan), dan mungkin beberapa hal lainnya.

person Gabi Purcaru    schedule 15.07.2011

Itu adalah dekorator, yang merupakan tipe fungsi khusus (atau kelas, dalam beberapa kasus) dengan Python yang mengubah perilaku fungsi lain. Lihat artikel ini.

@decorator
def my_func():
    pass

sebenarnya hanyalah sintaks khusus untuk

def my_func():
    pass
my_func = decorator(my_func)
person Rafe Kettler    schedule 15.07.2011

Itu adalah dekorator. Ini adalah gula sintaksis untuk:

def activities(request = None,\
            project_id = 0,\
            task_id = 0,\
            ...

activities = login_required(activities)
person utdemir    schedule 15.07.2011