# 装饰器 def decorate(fn): # fn = 未被装饰sum_num def inner(*args, **kwargs): # args 是不定长参数 接收的是单个字符元组 # kwargs 是不定长参数 接收的是键值对的 字典 # 讲这些参数 都加起来 print("args:", args) # (3, 6) print("kwargs:", kwargs) # {'a': 8, 'b': 2} fn(*args, **kwargs) return inner @decorate # 相当于 sum_num = decorate(sum_num) def sum_num(*args, **kwargs): # 将元组 数字加入 result = 0 for i in args: result += i # 将字典数字加入 for j in kwargs.values(): result += j print(result) if __name__ == '__main__': # sum_num(3, 6, a=8, b=2) = decorate(sum_num)(3, 6, a=8, b=2) = inner(3, 6, a=8, b=2) sum_num(3, 6, a=8, b=2)
含有不定值参数的装饰器
最新推荐文章于 2024-07-22 22:58:19 发布