美文网首页
Python教程:什么是带有参数的装饰器

Python教程:什么是带有参数的装饰器

作者: 鹤子青云上 | 来源:发表于2023-07-06 14:34 被阅读0次

前面我们讲解的装饰器,都是不带参数的,这些装饰器最终返回的都是函数名。在Python中,如果我们给装饰器添加参数,那么需要增加一层封装,先传递参数,然后再传递函数名。下面我们看一段代码:

def func_arg(args):
    def func(function_name):
        def func_in():
            print('--记录日志-args=%s'%args)
            function_name()
        return func_in
    return func
@func_args('haha')
def test():
    print('---test---')
>>>test()
--记录日志-args=haha
---test---

上述代码中,“@func_arg('haha')装饰函数test,等价于:

test = func_arg('haha')(test)

由于函数func_args的返回值是func函数的引用,也就是函数名func,因此,上述代码等价于:

test = func(test)

看到这行代码,大家应该很熟悉了,这就是前面我们学习的无参数装饰器。相比无参数的装饰器,带参数的装饰器只是用来“加强装饰”的,如果希望装饰器可以根据参数的不同,对不同的函数进行不同的装饰,那么带参数的装饰器是个不错的选择。

相关文章

  • 装饰器的使用

    函数带多个参数 普通的装饰器, 打印函数的运行时间 装饰器带有多个参数当装饰器带有多个参数的时候, 装饰器函数就需...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • 透析Python装饰器--透过现象看本质

    》眼花缭乱 Python的装饰器(也称语法糖)大致分为这几类: 无参数装饰器 有参数装饰器 装饰类的装饰器 无参数...

  • 透析Python装饰器-------------透过现象看本质

    》眼花缭乱 Python的装饰器(也称语法糖)大致分为这几类: 无参数装饰器 有参数装饰器 装饰类的装饰器 无参数...

  • [译] Python装饰器Part II:装饰器参数

    这是Python装饰器讲解的第二部分,上一篇:Python装饰器Part I:装饰器简介 回顾:不带参数的装饰器 ...

  • TypeScript: 类的装饰器(三)

    带参数的类的装饰器 学习 python 的同学应该知道,python 中也有装饰器,而且 python 中的众多框...

  • [python] 装饰器学习

    很多python的代码都带有装饰器=。=现在不学以后也要学学一下装饰器 闭包 在学装饰器之前先看看python的闭...

  • python 装饰器

    python 装饰器 描述 python 中一切皆对象,函数也可以当作参数传递 装饰器就是接受一个函数作为参数,添...

  • 让你Python到很爽的加速递归函数的装饰器

    Python技巧——好用的一个装饰器 今天我们会讲到一个[装饰器] 注记:链接“装饰器”指Python3教程中的装...

  • 装饰器详解

    装饰器详解 简单实例教程 需要装饰的函数 装饰器的参数是方法名,就是被装饰的函数 被装饰的函数需要这样写 调用 结...

网友评论

      本文标题:Python教程:什么是带有参数的装饰器

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