Page 48 - 6734
P. 48
Декоратори
Декоратор – це функція-обгортка, яка отримує і повертає іншу
функцію, метод чи клас [19, 37, 38]. Використовуються для
розширення їхніх можливостей.
def decorator(fn): # функція-обгортка, яка отримує і
повертає fn
print 'y=', # додані нові можливості
return fn # повертає функцію fn
def function(x): # функція, яка обгортається
return x*x
function=decorator(function) # обгорнути функцію
print function(2) # виклик обгорнутої функції
# те саме, але із застосуванням декоратора @decorator
@decorator
def function(x): # функція, яка обгортається
return x*x
print function(2) # виклик обгорнутої функції
y= 4
y= 4
Декоратори з аргументом
Декоратор може мати довільні аргументи [19]. У прикладі
декоратор має аргумент arg, значення якого виводиться перед
викликом функції, що обгортається.
def decorator(arg): # функція отримує аргумент і
повертає внутрішню функцію f
def f(fn): # внутрішня функція-обгортка
print arg, # додані нові можливості
return fn # повертає функцію fn
return f
def function(x): # функція, яка обгортається
47