Python装饰器的用法

作者: 眼君 | 来源:发表于2017-09-11 10:40 被阅读34次

假如我们想写一个函数,用来计算其它函数的大概执行时间。代码如下:

计算函数myfunc的运行时间

但是有个问题,以后每次调用‘myfunc’处都要改为deco(myfunc)。下面我们换一种写法:

另一种写法

之所以要换成这种写法是因为我们要引入装饰器的一种语法糖写法--”@”语法糖来精简装饰器的代码:

@装饰器写法

其实,@deco的本质就是myfunc = deco(myfunc),认清这点后看后面带参数的装饰器就很简单了。


被装饰的函数带参数的情况

前面我们讨论的都是被装饰的函数本身没有参数的情况,下面我们讨论一个被装饰函数有参数的情况:

带参数的装饰器的写法

另外,如果我们的装饰器也可以通过可变参数形式来支持多个拥有不同参数形式的函数:

可变参数的装饰器写法

装饰器的参数

到目前为止,我们装饰器中的参数都是函数体,如果我们想给装饰器添加其它数据类型的参数怎么办呢?

装饰器添加参数的写法

我们可以给装饰器外再套一层函数,就可以添加参数了

相关文章

  • 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/tkmxsxtx.html