Можно создать дубликат:
Understanding Python decoratorsКак применить декоратор python к функции?
Не могли бы вы дать краткий пример кода, который объясняет декораторов?
Можно создать дубликат:
Understanding Python decoratorsКак применить декоратор python к функции?
Не могли бы вы дать краткий пример кода, который объясняет декораторов?
Декоратор выполняет определение функции и создает новую функцию, которая выполняет эту функцию и преобразует результат.
@deco
def do():
...
эквивалентно:
do = deco(do)
Пример:
def deco(func):
def inner(letter):
return func(letter).upper() #upper
return inner # return a function object
#This
@deco
def do(number):
return chr(number) # number to letter
#end
# is equivalent to this
def do2(number):
return chr(number)
do2 = deco(do2)
#end
# 65 <=> 'a'
print(do(65))
print(do2(65))
>>> B
>>> B
Чтобы понять, декоратор, важно заметить, что декоратор создал новую функцию сделать, которая внутренний, который выполняет func и преобразует resu л.
def spam(func):
def wrapped(*args, **kwargs):
print "SPAM"
return func(*args, **kwargs)
return wrapped
@spam #this is the same as doing eggs = spam(eggs)
def eggs():
print "Eggs?"
Примечание Вы можете также использовать классы писать декоратор
class Spam(object):
def __init__(self, func):
self.func = func
def __repr__(self):
return repr(self.func)
def __call__(self, *args, **kwargs):
print "SPAM"
return self.func(*args, **kwargs)
@Spam
def something():
pass
Вот учебник я написал: https://www.codementor.io/python/tutorial/introduction-to-decorators – Sheena