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

    1***装饰器。

      装饰器基本模板:

    def warpar(args):
        def dinner(*args,**kwargs):
            #想添加的任何内容
            ret= args(*args,**kwargs)
            #想添加的任何内容
            return ret
        return dinner
    
    func = warpar(func)
    def func():
        print('你好~~')#装饰器在不改变原函数的执行的情况下为原函数增加额外的功能
    

       #装饰器在不改变原函数的执行的情况下为原函数增加额外的功能

    2.语法糖@

      利用模板套用之后再需要装饰的函数之上输入@装饰器名

    def warpar(args):
        def dinner(*args,**kwargs):
            #想添加的任何内容
            ret= args(*args,**kwargs)
            #想添加的任何内容
            return ret
        return dinner
    
    @warpar  #相当与func = warpar(func)
    def func():
        print('你好~~')
    

     3.函数有用的信息:

     为函数标注其功能和返回值:

    from functools import wraps
    def warpper(f):
        @wraps
        def inner():
            '''函数执行之前的操作'''
            ret = f()
            '''函数执行之后的操作'''
            return ret
        return inner
    
    def fun():
        '''
        这个函数的功能是***,参数分别是888,888,其返回值是
        :return:
        '''
    
    print(fun.__name__)
    print(fun.__doc__)
    #直接显示函数的注释
    

     4.多个装饰器装饰一个函数:
    从上之下再从下至上

    def func1(f):   #f = func
        def inner():
            print('3333')
            ret = f()  #f() = func()
            print('4444')
            return ret
        return inner
    
    
    def func2(f):  #f = inner
        def inner2():
            print('2222')
            ret = f()  #f = inner()
            print('5555')
            return ret
        return inner2
    
    
    def func3(f):  #f = inner2
        def inner3():
            print('1111')# 执行函数前的操作
            ret = f()  #f = inner2
            print('6666')
            return ret
        return inner3
    
    @func3
    @func2
    @func1                  
    def func():
        print('谁是傻逼')
    
    func()
    
  • 相关阅读:
    对象引用与对象克隆
    谁被回收了
    SpringMVC 返回json
    html基础
    org.hibernate.HibernateException: No Session found for current thread
    VB6之SendMessage模拟拖放事件
    VB6之GIF分解
    VB6之反编译工具VBRezQ
    VB6之WebBrowser控件
    (转载)VB6之鼠标移出事件
  • 原文地址:https://www.cnblogs.com/wpcbk/p/8692385.html
Copyright © 2011-2022 走看看