可变长参数: 函数中参数列表数量可以不固定
*args: 接收所有溢出的位置参数, 接收的值都被存入一个元组中.
其实,*args 是官方认证的表示,***** 后面的名称可以修改,** 形参中只要有 * 就有可变长参数的效果 **.
- def args_par(name,age,*args):
- """
- 用于演示 * args 的作用
- :param name: 姓名
- :param age: 年龄
- :param args: 溢出参数
- :return:
- """ print(f" 姓名:{name}, 年龄:{age}. 溢出的参数:{args}")
- args_par("egon",73) # 正常输入参数, 打印结果: 姓名: egon, 年龄: 73. 溢出的参数:()
- args_par("sean",18,"male","烫头") # 多传了 2 个参数, 打印结果: 姓名: sean, 年龄: 18. 溢出的参数:('male', '烫头')
需要注意的是:
***** 在形参中表示接收溢出参数, 在实参中的表示将容器类型的数据打散.# 函数有几个参数, 实参的长度就是几位, 否则报错. 字典传入的是 key 值
- def s_par(name,age,str):
- """
- 用于演示在实参中,* 表示打算的意思
- :param str: 传入的容器类型数据, str,list,tuple,dict,set
- :return:
- """
- print(name,age,str)
- s_par(*"sea") # 打印结果: s e a
- s_par(*['sean','18','male']) # 打印结果: sean 18 male
- s_par(*('a',1,'c')) # 打印结果: a 1 c
- s_par(*{"name":"sean","age":18,"gender":"male"}) # 字典传入的是 key 打印结果: name age gender
- s_par(*{'1','a',233}) # 打印结果: a 233 1
** kwargs: 接收所有溢出的关键字参数, 接收的值都被存入一个字典中. 输出时, 直接使用 kwargs; 如果是 *kwargs, 表示打算输出字典中的所有的 key 值
- def kwargs_par(name,age,**kwargs):
- """
- 用于演示 **kwargs 的作用
- :param name: 姓名
- :param age: 年龄
- :param kwargs: 溢出的关键字参数字典
- :return:
- """ print(f" 姓名:{name}, 年龄:{age}, 溢出的位置参数字典:{kwargs}")
- print(f"打散后的溢出位置参数:",end="")
- print(*kwargs)
- kwargs_par(age=18,gender="male",hobby="['study','read']",name="sean")
- # 打印结果:
- # 姓名: sean, 年龄: 18, 溢出的位置参数字典:{'gender': 'male', 'hobby': "['study','read']"}
- # 打散后的溢出位置参数: gender hobby
来源: https://www.cnblogs.com/xiaodan1040/p/11829675.html