函数的可变长参数

可变长参数

  • 参数的长度可便是指在调用函数的时候,实参的个数可以不固定
    • 在调用函数的时候,实参的定义就是位置参数和关键字参数两种
    • 形参可以提供两种解决方案来分别处理两种形式的可变长度的参数

(1)可变长位置参数(*args)

(1)任意类型参数

  • 如果在最后一个形参名的前面加,那么在调用函数的时候,溢出的实参,都会被接收,以元组的形式保存下来赋值给该形参
"""可变长位置参数"""
# 可变长位置参数就是在形参前面加个*,可以以元组的形式保存多出来的实参。

#在形参前面加*来接收调用时溢出的实参,最后以元组的形式保存!

# def login(*args):
#
#     return  args
# res=login(1,2,3,4,5)
# print(res)#(1, 2, 3, 4, 5)

#如果要求多个值的和
# def add(*args):
#     res=0
#     for i in args:
#         res+=i
#     print(res)
# add(1,2,3,4,5)
#15

(2)解包

  • 如果实现生成一个列表也可以直接传值给*args
"""解包"""
# 调用函数后,需要在列表前加*对列表进行解包,赋值给args
list=[11,22]
def add(*args):
    print(args)

add(1,2,*list)


# def add(*args):
#     print(args)
#
#
# add(1, 2, *[11, 22])

(2)可变长关键字参数(**kwargs)

  • 如果在形参前面加**,那么在调用函数时,溢出的关键字参数,都会以字典的形式保存下来赋值给该形参
"""可变长关键字参数**kwargs"""
# 可变长关键字参数,定义函数的形参前加**,调用函数的时候溢出的关键字,会以字典的形式保存下来赋值给形参
# def add(**kwargs):
#     print(kwargs)
#
# add(name='syh',age=18)
# #{'name': 'syh', 'age': 18}

#定义一个字典,字典前加**, 仍可以将以字典为实参传给**args
# dict={'name':'syh','age':18}
# def add(**kwargs):
#     print(kwargs)
#
# add(**dict)

# # 如果形参为常规参数(位置或默认),实参仍可以是 ** 的形式
# def foo(x, y, z=3):
#     print(x)
#     print(y)
#     print(z)
#
# foo(**{'x': 1, 'y': 2})



# 可变长位置参数和可变长关键字参数混合使用
# def register(name, age, *args, **kwargs):
#     user_dict = {'name': name, 'age': age}
#     if args:
#         user_dict['additional_info'] = args
#     if kwargs:
#         user_dict.update(kwargs)
#     return user_dict
#
# user_dict = register("Dream", 18, "handsome", hobby=["music"])
# print(user_dict)





def add(name,age,*args,**kwargs):
    dict={'name':name,'age':age}
    # 如果有位置参数进来而没有变量名接收的时候就会打包成元组,放到上面的字典中
    if args:
        dict['gender']=args
        # 如果有关键字参数进来,就会被字典更新
    if kwargs:
        dict.update(kwargs)
    return dict

dict=add('syh',18,'男',hobby='music')
print(dict)
posted @   苏苏!!  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示