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





