• 函数装饰器


    前面介绍的@classmethod和@staticmethod的本质就是函数装饰器,其中staticmethod和classmethod都是python的内置函数。

    使用@符号引用已有的函数后,可用于修饰其他函数,装饰被修饰的函数。

    @函数A   去修饰函数B 实际上步骤:

    1.将函数B(被修饰函数)作为参数传给函数A

    2.将函数B替换成第一步的返回值

    def funA(fn):
        print('A')
        fn()
        return 'fkit'
    @funA
    def funB():
        print('B')
    #funB
    print(funB)
    
    结果:
    A
    B
    fkit


    这里把funB传入funA

    def auth(fn):
        def auth_fn(*args):
            print('-------模拟执行权限检查-------')
            fn(*args)
        return auth_fn
    @auth
    def test(a,b):
        print('执行test函数,a:%s,b:%s'%(a,b))
    
    test(20,15)
    
    
    结果:
    -------模拟执行权限检查-------
    执行test函数,a:20,b:15

    上面使用@auth修饰了test()函数,这回使得test()函数被替换成auth()函数所返回的auth_fn函数,而auth_fn函数的执行流程是:1.先执行流程检查。2.回调被修饰的目标函数

    简单就是添加了一个检查的功能。

  • 相关阅读:
    集合框架(三)
    集合框架(二)
    集合框架(一)
    第九章 持有你的对象
    UML类图
    用a标签设置锚点
    设计原则
    第八章 接口与内部类
    装配Bean
    第33条:用EnumMap代替序数索引
  • 原文地址:https://www.cnblogs.com/inuyashalove/p/12777839.html
Copyright © 2020-2023  润新知