*args, **kwargs函数传递多个参数

# 写一个装饰器,玩两个游戏,其中两个游戏,一个两个参数, 一个有多个参数。
def guanjia(game):  # 函数作为参数进行传递时,不需要执行。只要函数名即可如果执行了就是值在传递。
    #  这里的*, **表示接收所有的参数, 打包成元组和字典
    def inner(*args, **kwargs):  # 其中*args就是一个元组, **kwargs就是一个字典。他是关键字参数,字典有键和值组成[]
        print("打开外挂,准备开始")
        #  这里的*, **表示把这里的元组和字典大散成位置参数以及关键字参数, 这里的参数集合可以不要字典参数代表
        game(*args, **kwargs)
        print("游戏结束,关闭外挂")
    return inner


@guanjia
def play_dnf(username, password):
    print("开心的玩dnf", "\n\n", "用户名:", username, "密码是:", password, '\n')


@guanjia
def play_lol(username, password1, hero):
    print("开心的玩lol", username, password1, hero)


play_dnf('admin', 'add')

play_lol('admin', 'add', '后裔')


# 列表, 有序可更改的集合,表示方式[]
# 元组, 有序不可更改的集合, 表示方式()
# 字典, 是一个无序, 可变,有索引的集合{}
# 集合,是一个无序,不可更改的集合{}

 

posted @ 2022-06-16 09:38  ascecc  阅读(56)  评论(0)    收藏  举报