zoukankan      html  css  js  c++  java
  • 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 ...
    
    
  • 相关阅读:
    UVA 11859
    [OpenGL]OpenGL坐标系和坐标变换
    树状数组
    编程算法
    乞讨 间隔[a,b]在见面p^k*q*^m(k>m)中数号码
    解析Android的 消息传递机制Handler
    Atitit.故障排除系列---php 计划网站数据库错误排除过程
    Remove Element
    [Angular Directive] Write a Structural Directive in Angular 2
    [Compose] 18. Maintaining structure whilst asyncing
  • 原文地址:https://www.cnblogs.com/pandaa/p/12057092.html
Copyright © 2011-2022 走看看