不定长参数也叫可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时,可用 包裹(packing)位置参数,或者 包裹关键字参数,来进行参数传递,会显得非常方便。
不定长元组参数
def user_info(*args):
# print(args) # 元组类型数据,对传递参数有顺序要求
print(f'我的名字{args[0]},今年{args[1]}岁了,住在{args[2]}')
# 调用函数,传递参数
user_info('Tom', 23, '美国纽约')
不定长关键字参数
def user_info(**kwargs):
# print(kwargs) # 字典类型数据,对传递参数没有顺序要求,格式要求key = value值
print(f'我的名字{kwargs["name"]},今年{kwargs["age"]}岁了,住在{kwargs["address"]}')
# 调用函数,传递参数
user_info(name='Tom', address='美国纽约', age=23)
栗子
def func(*args, **kwargs):
print(args)
print(kwargs)
# 定义一个元组(也可以是列表)
tuple1 = (10, 20, 30)
# 定义一个字典
dict1 = {'first': 40, 'second': 50, 'third': 60}
# 需求:把元组传递给*args参数,字典传递给**kwargs
# ① 如果想把元组传递给*args,必须在tuple1的前面加一个*号
# ② 如果想把字典传递给**kwargs,必须在dict1的前面加两个**号
func(*tuple1, **dict1)
# 案例:Python中数据的传递案例
# 不定长元祖 和不定长字典
# 案例 求所有参数的和
def sum_num(*args,**kwargs):
result = 0
for i in args:
result += i
for value in kwargs.values():
result += value
return result
print(sum_num(10, 20, 30, num1=40,num2=50))
输出:
150