Python笔记-函数装饰器的缺点
发布日期:2021-06-30 10:41:47 浏览次数:2 分类:技术文章

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

装饰器的好处,复用了代码,缺点就是原函数的元信息不见了

比如函数docstring、_name_、参数列表

如下代码:

def use_logging(level = "debug"):    def decorator(func):        def wrapper(*args, **kwargs):            print("[%s]  %s is running" % (level, func.__name__))            return func(*args, **kwargs)        return wrapper    return decoratordef bar1():    print("i am bar1")def bar2():    print("i am bar2")if __name__ == "__main__":    #这里就是带参数的原形    f = use_logging(level = "info")(bar1)    f()    print(f.__name__)    print(f.__doc__)

程序运行截图如下:

这里想让他打印bar1。

这里要使用functools

如下代码:

import functoolsdef use_logging(level = "debug"):    def decorator(func):        @functools.wraps(func)        def wrapper(*args, **kwargs):            print("[%s]  %s is running" % (level, func.__name__))            return func(*args, **kwargs)        return wrapper    return decoratordef bar1():    print("i am bar1")def bar2():    print("i am bar2")if __name__ == "__main__":    #这里就是带参数的原形    f = use_logging(level = "info")(bar1)    f()    print(f.__name__)    print(f.__doc__)

运行截图如下:

转载地址:https://it1995.blog.csdn.net/article/details/104508861 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Python笔记-类装饰器
下一篇:Python笔记-函数装饰器

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月19日 23时32分45秒