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

    装饰器

    一:什么是装饰器?

    装饰器就是装饰函数的函数,为函数添加功能的容器
    

    二:为什么要有装饰器?

    代码开发遵循开放封闭原则,针对源码是封闭的,不建议修改,但是扩展是开放的,装饰器是在,不修改原来代码情况下,对功能进行扩展。
    

    三:如何使用装饰器

    # 无参数装饰器模板
    def wrapper(func):
    	def inner(*args,**kwargs):
            res = func(*args,**kwargs)
            reunrn res
        retun inner
    
    
    示列
    #  写一个程序运行,计算程序快慢
    import time
    def timer(func):
        def wrapper(*args,**kwargs):
            start_t = time.time()
            res = func(*args,**kwargs)
            end_t = time.time()
            pritn("这个程序运行时间:{}".format(end_t-start_t))
            return res
        return wrapper
    
    def foo():
        print(1)
        time.sleep(2)
    
    foo=timer(foo)
    foo()
    
    @timer   # bar = timer(bar)
    def bar(a,b):
        print(a,b)
        return a,b
    
    bar(1,3)
    

    有参数装饰器

    def outer(type_):
        
        def wrapper(func):
            def inner(*args,**kwargs):
                inp_name = input('请输入你的用户名:')
                inp_pwd = input('请输入你的密码:')
                if type_ == 'mysql': # 这段代码过段时间补充上去
                    pass
                elif type_ == 'LDAP': # 这段代码过段时间补充上去
                    imp
                    pass
                elif type_ == 'file':
                    with open(r'db.txt',encoding='utf-8',mode='rt') as f:
                        for line in f:
                            q_name, q_pwd = line.strip().split(':')
                            if q_name == inp_name and q_pwd == inp_pwd:
                                res = func(*args,**kwargs)
                                return res
                        else:
                            print("密码或者用户名错误!")
                    
            return inner
        return wrapper
    
    
    
    
    
    
  • 相关阅读:
    正则表达式
    特殊符号作用
    sed
    scp
    EOF
    env
    JAVA进阶5
    JAVA进阶4
    JAVA进阶3
    JAVA进阶2
  • 原文地址:https://www.cnblogs.com/wait59/p/13160360.html
Copyright © 2011-2022 走看看