Python основой декоратор

Декоратор (декоратор)

  1. Функция основа
    # Функция Function.py 
    # 1) является функция объекта 
    DEF Hello ():
         возврат  ' ! Hello, World ' 
    
    FUNC = Hello
     печати (FUNC)   # <Объект> 
    Печать (FUNC ()) 
    
    
    # 2) могут быть вложенными функции, определенные в другая функция внутреннего 
    DEF Show ():
         Печать ( ' Запускать в шоу () ' )
         DEF сообщение (= Слово ' вводного ' ):
             вернуться Слово
         печати (Message ()) 
    
    Show () 
    
    
    # 3) функция возвращает в качестве аргумента. 
    DEF getWordType ( вид ='' ):
         Защита по умолчанию (слово = '' ):
             возвращение слово
         Защиты верхнее (слово = '' ):
             возвращение word.upper ()
         Защиты ниже (слово = '' ):
             возвращение word.lower () , 
    
        если kind.lower ( ) == ' ниже ' :
             вернуть нижнюю
         Элиф kind.lower () == ' верхний ' :
             вернуться верхний
         еще :
             вернуться по умолчанию 
    
    wordType = getWordType (' Верхняя ' )
     печать (wordType)
     печать (wordType ( ' Сопротивление бесполезно! ' )) 
    
    
    # 4)函数作为参数传入
    Защита GetName (имя = ' Льва ' ):
         возвращение имени 
    
    Защита Foo (FUNC):
         печать ( ' I будет вызывать функцию GetName позже ' )
         печати (FUNC ()) 
    
    Foo (GetName)

     

  2. Декоратор и функции для сравнения
    # Decorator.py装饰器
    # 不使用装饰器情况
    четкости my_new_decorator (a_function_to_decorator):
         четкости the_wrapper_around_the_original_function) (:
             печать ( ' Befor функция работает ' ) 
            a_function_to_decorator () 
            печать ( ' После выполнения функции ' )
         возвращение the_wrapper_around_the_original_function   # 将函数作为参数返回
    
    
    Защита a_stand_alone_function ():
         печать ( «Я САМОСТОЯТЕЛЬНОЕ функцию, не смейте изменить меня » )
    
    
    a_stand_alone_function () 
    a_stand_alone_function_decorated = my_new_decorator (a_stand_alone_function)   # 将函数作为参数传入
    печати (a_stand_alone_function_decorated) 
    a_stand_alone_function_decorated () 
    
    # 使用装饰器语法糖"@" 
    @my_new_decorator
     Защиту another_stand_alone_function ():
         печать ( ' оставить меня в покое ' ) 
    
    
    another_stand_alone_function () 
    # такой же , как: another_stand_alone_function = my_new_decorator (another_stand_alone_function)

     

  3. Декоративные приложения
    # Decorator_web.py веб中的装饰器应用
    Защита makebold (FUNC):
         Защита обертка ():
             возвращение  ' <б> ' + FUNC () + ' </ b> ' 
        возвращение обертки 
    
    Защита makeitalic (FUNC):
         Защита обертка () :
             возвращение  ' <я> ' + FUNC () + ' </ I> ' 
        возвращение обертка 
    
    @makebold 
    @makeitalic 
    Защиты слово ():
         возвращение  " Привет, декоратор! ' 
    
    
    Печать (слово ())
    # Decorator_time.py проверка декоратор функция Время работы 
    Импорт Время
     импорта OS 
    
    
    DEF Timer (FUNC):
         DEF warpper (УХО): 
            time_begin = time.ctime ()
             Печать ( ' Бегина @ ' + time_begin) 
            FUNC (УХО) 
            TIME_END = time.ctime ()
             Печать ( ' End @ ' + TIME_END) 
    
            Печать ( ' Бегина @ ' + time_begin)
             Печать ( ' End @ '+ TIME_END)
         возвращение warpper 
    
    
    @timer 
    DEF Walk (R & л УХО = ' D: \ PyCharm \ Python \ Practice ' ):
         для корня, каталоги, файлы в os.walk (УХО):
             # Print (корень) каталог печати # все подкаталоги абсолютный путь 
            # Print (каталоги) # печать список подкаталогов в каждой директории 
            # печати (файлы) # распечатать список всех файлов в 
            печати (корень)
             для файла в формате:
                 Печать ( « \ т » + файл ) 
    
    
    Прогулка (ВПЦ = Р & л ' D: \ PyCharm ' )

     

  4. Он содержит все параметры и возвращаемое значение декоратора
    # Decorator_args.py包含所有参数的装饰器
    импорта время
     Защита таймер (FUNC):
         Защита внутреннего (* Args ** kwargs): 
            начать = time.time () 
            повторно = FUNC (* арг ** kwargs) 
            конца = время .time ()
             возвращение вновь
         вернуть внутренний 
    
    
    @timer   # ==> func1 = таймер (func1) 
    защиту func1 (а, б):
         печать ( ' в func1 ' )
         возвращают а, б 
    
    
    @timer # ==> func2 = таймер (func2 ) 
    Защитаfunc2 (а):
         печать ( ' В func2 и получить ' , а)
         возвращение  ' func2 над ' 
    
    
    func1 ( ' аааааа ' , ' BBBBBB ' )
     печать (func2 ( ' аааааа ' ))

     

  5. Это функция нормальная функция может быть использована декорированный метод
    # Decorator_method.py 
    от functools импорта оборачивает 
    
    Защиту Деко (FUNC): 
        @wraps (FUNC) 
        четкости обертку (* арг ** kwargs):
             возвращение FUNC (* арг, ** kwargs)
         возвращение обертка 
    
    @deco 
    Защиту индекс ():
         ' '' DOCS здесь декоратора ''» 
        печати ( ' из индекса ' ) 
    
    
    индекс () для 
    печати (индекс. __name__ )
     печать (индекс. __doc__ )

     

рекомендация

отwww.cnblogs.com/noonjuan/p/10956619.html