博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器进阶
阅读量:5808 次
发布时间:2019-06-18

本文共 1456 字,大约阅读时间需要 4 分钟。

使用装饰器修复技术wraps

from functools import wrapsdef wrapper(func):    @wraps(func)    def inner(*args, **kwargs):        print("在被装饰函数之前要做的事")        ret = func(*args, **kwargs)        print("在被装饰函数之后要做的事")        return ret    return inner@wrapperdef test(param):    print(123)    return paramret = test("ABC")print(ret)print(test.__name__)  # 结果为test,如果不使用wraps,结果为inner

带参数的装饰器

from functools import wrapsflag = False  # 可以说是控制装饰器是否工作def wrapper_out(flag):    def wrapper(func):        @wraps(func)        def inner(*args, **kwargs):            if flag:                print("在被装饰函数之前要做的事")                ret = func(*args, **kwargs)                print("在被装饰函数之后要做的事")                return ret            else:                return func(*args, **kwargs)        return inner    return wrapper@wrapper_out(flag)def test(param):    print(123)    return paramret = test("ABC")print(ret)

多个装饰器装饰一个函数

from functools import wrapsdef wrapper1(func):    @wraps(func)    def inner(*args, **kwargs):        print("wrapper1:before")        ret = func(*args, **kwargs)        print("wrapper1:after")        return ret    return innerdef wrapper2(func):    @wraps(func)    def inner(*args, **kwargs):        print("wrapper2:before")        ret = func(*args, **kwargs)        print("wrapper2:after")        return ret    return inner@wrapper1@wrapper2def test1(param):    print(123)    return paramprint(test1("ABC"))

 

转载于:https://www.cnblogs.com/believepd/p/9570813.html

你可能感兴趣的文章
***CodeIgniter框架集成支付宝即时到账支付SDK
查看>>
Struts2访问ServletAPI的三种方式
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
XML
查看>>
【我的总结20170823】多实例部署
查看>>
[MySQL优化案例]系列 — slave延迟很大优化方法
查看>>
线性表4 - 数据结构和算法09
查看>>
C语言数据类型char
查看>>
Python线程详解
查看>>
Online Patching--EBS R12.2最大的改进
查看>>
说说我的web前端之路,分享些前端的好书
查看>>
Binary Search Tree Iterator leetcode
查看>>
Oracle性能优化--DBMS_PROFILER
查看>>
关闭Jquery Ajax 缓存
查看>>
uva-317-找规律
查看>>
Event事件的兼容性(转)
查看>>
CQRS学习——一个例子(其六)
查看>>
Hadoop 学习资料集锦
查看>>
12.22 repeater 添加
查看>>