zoukankan      html  css  js  c++  java
  • 装饰器

    装饰器

    装饰器的特点:

      用户感觉不到装饰器的存在

      在一个函数前后唐家功能

      本身的函数不会改变

    开放封闭原则

      开放 对于扩展是开放的

      封闭 对于修改是封闭的

    装饰器的基本结构

    def wrapper(func):
        def inner(*args,**kwargs):
            #被装饰函数执行之前的操作
            ret=fanc(*args,**kwargs)
            #被装饰函数执行之后的操作
            return ret
        return inner
    
    @wrapper
    def f(*argument):
        pass

    例子

    -------------------------------------------------------------------------------------------------------
    # import time
    # def timmer(F):                         #    装饰器
    #     def inner():
    #         start_time=time.time()
    #         F()
    #         end_time=time.time()
    #         print(end_time-start_time)
    #     return inner
    #
    # @timmer                             #   F=timmer(F)         #   语法糖
    # def F():
    #     sum=0
    #     for i in range(1,100000):
    #         sum+=i                         # 被装饰的函数
    # F()                        # 直接调用函数,还可以加上装饰器的功能
    # -------------------------------------------------------------------------------------------------------

    例二

    # def wrapper(func):
    #     def inner(*args):
    #         print('你正在调用%s函数'%(func.__name__))
    #         re=func(*args)
    #         return re
    #     return inner
    #
    # @wrapper
    # def welcome(name):
    #     print('welcome: %s'%name)
    # @wrapper
    # def home():
    #     print('欢迎来到home页!!')
    #
    # home()
    # print('')
    # welcome('alex')
    

      

    带参数的装饰器  ( 批量 使用装饰器)
    # def outter(flag):
    #     def wrapper(func):
    #         def inner(*args,**kwargs):
    #             if flag:
    #                 pass
    #                 # 装饰功能
    #             re=func(*args,**kwargs)
    #             if flag:
    #                 pass
    #                 # 装饰功能
    #
    #             return re
    #         return inner
    #     return wrapper
    
    # @outter(False)
    # def fun1():
    #     print('Apple')
    #
    # fun1()
     
  • 相关阅读:
    POJ Countries in War 3114
    POJ 2553 The Bottom of a Graph
    POJ 2762 Going from u to v or from v to u?(强联通 + TopSort)
    POJ 3180 The Cow Prom(强联通)
    HDU 4738 Caocao's Bridges
    喵哈哈村的几何大师╰☆莣メ誋こ月
    Vladik and Entertaining Flags
    XOR Queries
    Palindrome
    F
  • 原文地址:https://www.cnblogs.com/hzqblog/p/7498587.html
Copyright © 2011-2022 走看看