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()
    
  • 相关阅读:
    [题解]小X的液体混合
    [题解]图的遍历
    [模板]基本线段树操作
    C#中 Excel列字母与数字的相互转换
    Oracle 查询数据库表大小
    vi/vim 编辑、搜索、查找、定位
    Linux 中 sqlite3 基本操作
    MessageBox.Show 消息提示框显示到窗口最顶层
    Docker bash: ping: command not found 解决方法
    PLSQL F8执行单条SQL
  • 原文地址:https://www.cnblogs.com/wpcbk/p/8692385.html
Copyright © 2011-2022 走看看