一個裝飾器裝飾一個函數

【代碼題】

有一個 字典{‘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}

運行結果:建議單步調試,運行過程比較清晰

在這裏插入圖片描述

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