• Python 装饰器


    Python 装饰器,开放封闭原则

    1. 装饰器:装饰,装修,体验更加,增加功能

    2. 开放封闭原则: 开放:对代码的拓展开放

      ​ 关闭:对源码的修改关闭

    3. 装饰器:完全遵循开放封闭原则

      在不改变原函数的代码以及调用方式下,为其增加新的功能

      装饰器 就是一个函数 :

    # -*- coding: utf-8 -*-
    import time
    
    
    def login():
        time.sleep(1)
        print('123132')
    
    
    def timecheck(func):
        def inner():
            oldtime = time.time()
            func()
            newtime = time.time()
            print((newtime-oldtime))
        return inner
    
    login = timecheck(login)		#不改变源代码 不改变调用方式 新增 所消耗时间的输出
    
    login()
    

    ​ 4.python 对装饰器进行了优化,提出了语法糖的概念

    # -*- coding: utf-8 -*-
    import time
    #timecheck装饰器
    def timecheck(func):
        def inner():
            oldtime = time.time()
            func()
            newtime = time.time()
            print((newtime-oldtime))
        return inner
    
    @timecheck		#timecheck装饰器
    def login():
        time.sleep(1)
        print('123132')
    
    login()
    
    1. 装饰器 添加参数,返回值:

      # -*- coding: utf-8 -*-
      import time
      #timecheck装饰器
      def timecheck(func):
          def inner(*args,**kwargs):
              oldtime = time.time()
              revar = func(*args,**kwargs)
              newtime = time.time()
              print((newtime-oldtime))
              return revar
          return inner
      
      @timecheck
      def login(name,date):
          time.sleep(1)
          print(f'welcome {name},{date}')
          return 'loginover'
      
      
      a = login('panda',6666)
      
      print(a)
      

    标准装饰器:

    #标准装饰器:
    def wrapper(func):
        def inner(*args,**kwargs):
            #添加额外的功能
            re = func(*args,**kwargs)
            #添加额外的功能
            return re
    
    @wrapper
    def ...
    
    
  • 相关阅读:
    bzoj1711: [Usaco2007 Open]Dining吃饭
    bzoj1036: [ZJOI2008]树的统计Count
    bzoj1497: [NOI2006]最大获利
    bzoj2561: 最小生成树
    BZOJ 2083: [Poi2010]Intelligence test( )
    BZOJ 2212: [Poi2011]Tree Rotations( 线段树 )
    BZOJ 1110: [POI2007]砝码Odw( 贪心 )
    BZOJ 3163: [Heoi2013]Eden的新背包问题( 背包dp )
    BZOJ 1537: [POI2005]Aut- The Bus(dp + BIT)
    BZOJ 2875: [Noi2012]随机数生成器( 矩阵快速幂 )
  • 原文地址:https://www.cnblogs.com/pandaa/p/12057092.html
Copyright © 2020-2023  润新知