美文网首页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 高级编程系列(二)

    Python 装饰器常见用法 装饰器与spring 中的AOP类似 通过装饰器可以实现面向切面的注入 一:缓存 ...

  • Python装饰器高级用法

    转载至:Python装饰器高级用法 在 Python 中, 装饰器 一般用来修饰函数,实现公共功能,达到代码复用的...

  • Python装饰器的高级用法

    Python装饰器的高级用法(翻译) 原文地址https://www.codementor.io/python/t...

  • 函数作参

    实现类似python中装饰器的函数 type typenam func(...)...用法例子 testfunc ...

  • Python装饰器

    本篇将介绍Python的装饰器用法,更都内容请参考: Python学习指南 装饰器 由于函数也是一个对象,而且函数...

  • Python装饰器的用法

    假如我们想写一个函数,用来计算其它函数的大概执行时间。代码如下: 但是有个问题,以后每次调用‘myfunc’处都要...

  • python装饰器的用法

    这一篇我们来讲讲装饰器的用法 装饰器有什么作用呢,见名知意,装饰用的。如果我们写了一个方法,要为这个方法增加一个功...

  • Python 2 - 高级用法 - 装饰器

    Python 2 - 高级用法 - 装饰器 一谈到 装饰器,就离不开闭包 闭包 闭包就是能够读取其他函数内部变量的...

  • 十足干货|Python装饰器的从入门到高阶用法详解 !

    . 目录如下 装饰器语法糖入门用法:日志打印器入门用法:时间计时器进阶用法:带参数的函数装饰器高阶用法:不带参数的...

  • 一篇文章搞懂装饰器所有用法(建议收藏)

    本文的目录如下:装饰器语法糖入门用法:日志打印器入门用法:时间计时器进阶用法:带参数的函数装饰器高阶用法:不带参数...

网友评论

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

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