• Python之装饰器复习


    一、什么是装饰器?

           装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象。


    二、强调装饰器的原则:

    1 不修改被装饰对象的源代码

    2 不修改被装饰对象的调用方式

    3:在遵循1和2的前提下,为被装饰对象添加上新功能

     

    三、装饰器的使用:

    import time
    def timmer(func):
        def wrapper(*args,**kwargs):
            start_time=time.time()
            res=func(*args,**kwargs)
            stop_time=time.time()
            print('run time is %s' %(stop_time-start_time))
            return res
        return wrapper
    
    @timmer         # 相当于 foo = timmer(foo)
    def foo():
        time.sleep(3)
        print('from foo')
    foo()
    无参数的装饰器
    def add(adds):     #新增一个参数,接收装饰器传来的值
        def decor(func):   
            print(adds)    
            def inner(*arg , **kw):      
                print('我是函数decor')
                result = func(*arg , **kw)  
                print(adds)        #打印装饰器中的值
                return result         
            return inner    
        return decor     #闭包
    
    # @decor  show = decor(show)
    @add('我是新加的参数adds')     #相当于返回decor函数,return decor
    
    def show(*arg , **kw):
        print('我是函数show')
        print('我是函数show中的参数name:',arg,'我是函数show中的参数age:',kw)
        return '我是函数show中的返回值'
    
    ret= show(*'xiaobo' , **{'zidian':25})     #*把'xiaobo'转换为元组 ,**把字典传进去
    print(ret)
    带参数的装饰器
    def decor(func):
        def inner(name,age):
            print('我是decor')        # 在函数之前执行的功能
            return func(name,age)    # 被装饰的函数
        return inner
    
    @decor
    def show(name , age):
        print('我是函数show')
        print('我是函数show中的参数name:',name,'我是函数show中的参数age:',age)
        return '我是函数show中的返回值'
    show('alex',20)
    被修饰的函数需要参数
  • 相关阅读:
    hadoop02---高可用网站架构
    springboot-vue项目前台2
    Java Serializable(序列化)
    JAVA 正则表达式、汉字正则、 java正则代码
    MyEclipse导入Maven项目
    JAVA学习:maven开发环境快速搭建
    删除
    关于java程序打包为EXE的若干问题
    ServletContext与ServletConfig的详解及区别
    在CSS中定义a:link、a:visited、a:hover、a:active顺序
  • 原文地址:https://www.cnblogs.com/ray-h/p/10277895.html
Copyright © 2020-2023  润新知