函数的可变长参数
1.计算机基础2.编程语言和Python语言介绍3.八大基本数据类型4.python语法入门变量和常量5.python和pycharm相关补充6.计算机五大部件补充7.文件操作8.编码和解码9.字符编码10.基本数据类型的内置方法11.循坏结构12.流程控制13.基本运算符14.程序与用户交互15.迭代器16.闭包函数17.装饰器18.多层语法糖嵌套19.函数的参数
20.函数的可变长参数
21.命名关键字参数22.名称空间与作用域23.异常处理24.深浅拷贝问题25.函数的定义和调用26.控制文件读写内容的模式27.主动控制文件内指针移动28.文件的操作方法29.垃圾回收机制GC30.可变与不可变类型31.元类32.内置方法33.pickle模块34.单例模式35.方法补充issubclass和isinstance36.多态37.继承38.面向对象的三大特性39.封装40.内置函数41.面向对象42.logging模块43.subprocess模块44.正则45.datetime模块46.time模块47.绝对路径和相对路径48.random模块49.os模块50.hashlib模块51.模块与包52.json模块53.生成器54.三元运算符可变长参数
- 参数的长度可便是指在调用函数的时候,实参的个数可以不固定
- 在调用函数的时候,实参的定义就是位置参数和关键字参数两种
- 形参可以提供两种解决方案来分别处理两种形式的可变长度的参数
(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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)