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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- 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())

  

posted @   LiuYanYGZ  阅读(393)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-01-09 c linux ping 实现
点击右上角即可分享
微信分享提示