不定长参数 也叫 可变参数。用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会显得非常方便。
相关链接:Python---函数的参数类型----位置参数(不能顺序乱)、关键词参数(键值对形式,顺序可乱)-CSDN博客
包裹(packing) 位置参数 -----*args---没有一一对应的,位置不能变。----元组
packing 英 /ˈpækɪŋ/ n. 包装;填充物 v. 包装;装满;
args n. [计算机]参数 arguments n. 参数
def user_info(*args):
print(args)
# 调用函数,传递参数
user_info('Tom', 23, '美国纽约')
注意:
传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是包裹位置传递。
包裹 关键字参数-----**kwargs---一一对应的,位置能变无要求。----字典
kw = keyword + args
keyword 英 /ˈkiːwɜːd/ n. 密码;关键字
args n. [计算机]参数 arguments n. 参数
def user_info(**kwargs):
# print(kwargs) # 字典类型数据,对传递参数没有顺序要求,格式要求key = value值
print(f'我的名字{kwargs["name"]},今年{kwargs["age"]}岁了,住在{kwargs["address"]}')
# 调用函数,传递参数----对传递参数没有顺序要求,格式要求key = value值
user_info(name='Tom', address='美国纽约', age=23)
总结:
包裹位置参数 传递、包裹关键字参数 传递,都是一个组包的过程。
Python组包:就是把 多个数据 组成 元组 或者 字典的过程。
随机代码:
def shopping_info(**kwargs):
# print(kwargs) # 字典类型数据,对传递参数没有顺序要求,格式要求key = value值
print(f'双十一买了{kwargs["kuaidi1"]},还买了{kwargs["kuaidi2"]}和{kwargs["kuaidi3"]}')
# 调用函数,传递参数----对传递参数没有顺序要求,格式要求key = value值
shopping_info(kuaidi1='靴子', kuaidi2='裤子', kuaidi3='羽绒服')