一个装饰器装饰一个函数

【代码题】

有一个 字典{‘a’:1,‘b’:2,‘c’:3},现在有一个这个需求:
1).向字典中添加新的键值对,如果字典中的键,已经存在,则取消添加,打印提示:键已经存在。

2).如果键不存在,则添加到字典中。(请使用装饰器来实现,顺便复习下*args和**kwargs的用法)

a ={ 'a': 1, 'b': 2, 'c': 3}


def select(func):
    def inner(*args, **kwargs):
        if len(args) == 0:
            if kwargs['key'] in kwargs['data']:
                print("键存在")
            else:
                func(**kwargs)
        else:
            if args[1] in args[0].keys():
                print("键存在")
            else:
                func(*args)
    return inner


@select
def append(data, key, value):
    data[key] = value
    print(data)


if __name__ == "__main__":
    append(*(a, 'heihei', 100)) # 将参数传递给args 也就是args = (a,'heihei',100) ,kwargs ={}
    append(data = a, key='a',value=100)  # 将参数传递给kwargs 也就是args = () ,kwargs ={'data':a,'key':a,value:100}

运行结果:建议单步调试,运行过程比较清晰

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章