python3 恰到好处的 装饰器 @ 说明教程

大叔的python之路 andy 5年前 (2019-07-09) 1738次浏览 已收录 0个评论 扫描二维码
python3 恰到好处的 装饰器 @ 说明教程
装饰器就是用一个函数来装饰另一个函数,比如用 A函数来装饰B函数。
一但经过装饰器宣告之後,以後调用 B函数时,会先运行A函数,再由A函数内部运行B函数。
接下来, 用实例说明
先上代码
第 2行 use_logging 用来装饰别的函数,所以写法比较特殊, 我们先大致看一下即可。
接下来分两个部份说明,一个是装饰 bar 函数,另一个是装饰 foo 函数
先说 bar 函数的装饰过程
第10行 bar  函数,一个一般的函数, 没有特别之处,
第19行 将bar函数当成参数,在调用 use_logging 时传入, 然後将这一整个行为取名为 bar
第21行 运行名为 bar 的行为
以上的过程,就是一个装饰的过程。但是第19行的部份,感觉有点复杂有点绕。
所以, python 的装饰器符号 @ 就是来简化这个过程
第14行 宣告用 use_loggin 函数装饰下一行定义的函数
第15行 foo 函数一般函数,也没有特别之处
第23行 运行 foo 函数
本篇的说明看得懂吗?是不是简单多了?
以下是运行的结果
def use_logging(func):

    def wrapper(*args, **kwargs):
        print("%s is running" % func.__name__)
        return func(*args, *kwargs)
    return wrapper


def bar():
    print('this is bar')


@use_logging
def foo():
    print('this is foo')


bar = use_logging(bar)

bar()

foo()


神隊友學長Andy , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3 恰到好处的 装饰器 @ 说明教程
喜欢 (1)
[[email protected]]
分享 (0)
andy
关于作者:
中年大叔,打拼 like young students.
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址