python带有通用参数的通用装饰器

笑着哭i 提交于 2020-01-09 01:43:09
# -*- coding:utf-8 -*-

# 带有通用参数的通用装饰器
def check_with_para(*args2, **kwargs2):
    def check(fn):
        def inner(*args, **kwargs):
                print("密码验证完毕,通过, args=%s,kwargs=%s"%(args, kwargs))
                if "haha" == args2[0]:
                    return fn(*args, **kwargs)
                elif "hehe" == args2[1]:
                    print("这里可以做点其它不同的处理1")
                    return fn(*args, **kwargs)
                else:
                    print("这里可以做点其它不同的处理2")
                    return fn(*args, **kwargs)
        return inner
    return check

# 1. 先执行check_with_para("haha")函数, 返回check的引用
# 2. 再执行@check
# 3. 使用@check对f1进行装饰
@check_with_para("haha")
def f1(n1, n2):
    print("功能1执行中")
    return n1 + n2

@check_with_para("hehe", 1)
def f2(n1, n2, n3):
    print("功能2执行中")
    return n1 - n2 * n3

@check_with_para("heihei", 2, True)
def f3():
    print("功能2执行中")


if __name__ == '__main__':
    print(f1(7, 8))
    print(f2(1, 4, 2))
    print(f3())

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!