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
   43   44   45   46   47   48   49   50   51   52   53