本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 多值参数
定义支持多值参数的函数:
- 有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数
- Python中有两种多值参数
- 参数的名前增加一个
*可以接收元组 - 参数名前增加两个
*可以接收字典 一般在给多值参数命名时,习惯使用以下两个名字: *args-- 存放元组参数,前面有一个*,args是arguments的缩写,是变量的含义**kwargs-- 存放字典参数,前面有两个*,kw是keyword的缩写,kwargs可以记忆键值对参数
多值参数的应用会经常出现在网络上一些大牛开发的框架中,知道多值参数,有利于读懂厉害的代码。
def demo(num, *nums, **person):
print(num)
print(nums)
print(person)
# demo(1)
demo(1, 2, 3, 4, 5, name="小明", age=18)
2. 实例详解
项目需求:计算任意多个数字的和
详细要求:
- 定义一个函数sum_numbers,可以接收的任意多个整数
- 功能:将传递的所有数字累加并且返回累加的结果
# 使用*接收多值参数
def sum_numbers(*args):
num = 0
print(args)
# 循环遍历
for n in args:
num += n
return num
# 在调用时,只需使用,进行分隔就好
result = sum_numbers(1, 2, 3, 4, 5)
print(result)
程序运行结果如下图所示:本案例使用了*接收多值参数,因此在调用时,函数参数之间只需使用,进行分隔就好。
3. 元组和字典的拆包
在调用带有多值参数的函数时,如果希望:
- 将一个元组变量,直接传递给
args - 将一个字典变量,直接传递给
kwargs就可以使用拆包,简化参数的传递,拆包的方式是: - 在元组变量前,增加一个
* - 在字典变量前,增加两个
*
4. 示例详解
def demo(*args, **kwargs):
print(args)
print(kwargs)
# 元组变量/字典变量
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}
# 这样args就能接收元组,kwargs就能接收到完整的字典
# 方法1:拆包语法
# 可以简化元组变量和字典变量的传递
demo(*gl_nums, **gl_dict)
print("-"*50)
# 方法2:直接导入
demo(1, 2, 3, name="小明", age=18)
运行结果如下图所示:代码演示中给出的两种方式都能够接收完整的字典和元组。
但是拆包方式更加方便,可以简化元组变量和字典变量的传递。