美文网首页
装饰器的实质

装饰器的实质

作者: p712long | 来源:发表于2018-01-12 14:08 被阅读0次

     python中的装饰器可以理解为把这个函数看作是另外一个函数的一个特殊参数,通常我们参数都是一些常见数据类型(数字、字符窜、布尔、元组、列表、集合、字典等等),这个我们把它作为 object,而且这个object是一个function。

当我们调用某个函数时,如果该函数被声明为装饰器,则应该先把该函数作为特殊参数去执行这个装饰器(装饰器的名称就是另外一个函数名)

如下代码:

   def login(aa):

    def decorator(func):

        def wrapper(*args, **kw):

            print(aa)

            print('call function name is: %s' % func.__name__)

            return func(*args, **kw)

        return wrapper

    return decorator

@login('装饰器可带任意参数')

def testd(loginid,loginpwd):

    print(loginid,loginpwd)

testd('tom','123456') 

(1) 装饰器可带任意参数,如果带了参数,则装饰器第一层应该接收这些参数;

(2) 如果装饰器没有带参数,则第一层直接接收func,如果带了则第二层再来接收func;

(3) 第二层或第三层接收可变参数;

(4)最后在第二层或第三层返回这个函数,其实相当于调用这个函数,因为我们目的就是调用它;

相关文章

  • 装饰器的实质

    python中的装饰器可以理解为把这个函数看作是另外一个函数的一个特殊参数,通常我们参数都是一些常见数据类型(数...

  • jQuery的实质, 自己写一个jQuery

    jQuery 的实质: 在了解了python的装饰器之后, 发现jQuery的本质就是一个装饰器, 只是它接受了不...

  • python装饰器

    什么是装饰器? 装饰器实质上是闭包的一种特殊状态,闭包中我们一般传入的是自由变量,而在装饰器中,我们传入的是一个函...

  • python学习笔记----装饰器

    装饰器 实质: 是一个函数参数:是你要装饰的函数名(并非函数调用)返回:是装饰完的函数名(也非函数调用)作用:为已...

  • 装饰器

    """@装饰器- 普通装饰器- 带参数的装饰器- 通用装饰器- 装饰器装饰类- 内置装饰器- 缓存装饰器- 类实现...

  • typescript 五种装饰器

    装饰器类型 装饰器的类型有:类装饰器、访问器装饰器、属性装饰器、方法装饰器、参数装饰器,但是没有函数装饰器(fun...

  • python——装饰器详解

    一、装饰器概念 1、装饰器 装饰器:一种返回值也是一个函数的函数,即装饰器。 2、装饰器目的 装饰器的目的:装饰器...

  • Python中的装饰器

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

  • 装饰器

    装饰器 decorator类装饰器 带参数的装饰器 举例(装饰器函数;装饰器类;有参与无参) https://fo...

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

网友评论

      本文标题:装饰器的实质

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