美文网首页Pythonpython进阶课
python装饰器的用法

python装饰器的用法

作者: 双_双 | 来源:发表于2019-07-22 16:36 被阅读22次

    这一篇我们来讲讲装饰器的用法

    装饰器有什么作用呢,见名知意,装饰用的。如果我们写了一个方法,要为这个方法增加一个功能,那么直接修改这个方法就可以达到目的,但是如果我们要为10个方法增加一个相同的功能的,总不能重写这10个方法吧,所以这个时候就可以使用装饰器了。装饰器的另一个优点是在不改变原有代码的情况下扩展功能,也就避免了因为改动代码造成的一系列问题。下面上代码:

    定义一个方法test001,输出最大值

    方法test_001

    写一个装饰器,功能是 输出“最大值是:”这句话

    装饰器

    使用装饰器,查看最终结果:

    使用装饰器

    查看输出结果:最大值是:\n5

    很明显在执行test_001之前先执行了一个输出语句,任何方法使用这个装饰器都会先执行一个输出语句

    下面我们换个方法实现同样的效果:

    不适用装饰器

    这里我们没有使用装饰器,而是把test_001函数作为参数传递给了test_one,得到的结果与使用装饰器是一样的

    来看一下执行步骤:

    执行步骤

    解析一下步骤:

    步骤一:执行步骤一,将test_001作为参数传给test_one

    步骤二:执行test_one函数 返回test_two,也就是说:这时将test_two赋值给test_001

    步骤三:执行步骤三,其实这时的test_001(3,5)函数就是test_two(3,5)函数

    步骤四:执行test_two(3,5)函数,输出print(“最大值是:”),return结果为传给test_one的参数func(这个参数是步骤一中传递的test_001),所以执行函数test_001(),(*args, **kw)是test_two的参数(3,5),return func(*args, **kw)也就是return func(3,5) ,也就是test_001(3,5)

    步骤五:步骤四中传递了参数(3,5),所以比较结果是5 

    有点绕,动手打打断点就理解了,不好理解的话可以写个更简单的函数,不要穿参数。

    相关文章

      网友评论

        本文标题:python装饰器的用法

        本文链接:https://www.haomeiwen.com/subject/luoslctx.html