可变参数和关键字参数——传参时参数带名字

位置参数 ---> positional argument
关键字参数 ---> keyword argument ---> 参数名=参数值

关键字参数一定在位置参数后面

# *args ---> 可变参数 ---> 可以接收零个或任意多个位置参数 ---> 将所有的位置参数打包成一个元组
def add(*args):
    print(args, type(args))
    temp = [arg for arg in args if type(arg) in (int, float)]
    return sum(temp)


# **kwargs --> 可以接收零个或任意多个关键字参数 ---> 将所有的关键字参数打包成一个字典
def add2(**kwargs):
    print(kwargs, type(kwargs))
    temp = [kwarg for kwarg in kwargs.values() if type(kwarg) in (int, float)]
    print(temp, type(temp))
    return sum(temp)


# 位置参数需要在关键字参数前面,即*需要在**前
def com(*args, **kwargs):
    print(f'args输出:{args},kwargs输出:{kwargs}')
    return


print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3, 4))
# # TypeError: add() got an unexpected keyword argument 'a'
# print(add(a=1, b=2))

print(add2(a=1, b=2))
com(1, 2, 3, '4', a=5, b='6')
posted @ 2023-09-06 16:00  Danlis  阅读(23)  评论(0编辑  收藏  举报