1、可变参数
1.1、 * args表示创建一个名为args的空元组,该元组可接受任意多个传入的非关键字实参
def cal(*args):
print(type(args))
print(args)
cal(1,2,3,4)
输出:
<class 'tuple'>
(1, 2, 3, 4)
1.2、 ** kwargs 表示创建一个名为 kwargs 的空字典,该字典可以接收任意多个以关键字参数赋值的实际参数
def cal2(**kwargs):
print(type(kwargs))
print(kwargs)
cal2(name="小明",age=18,sex="女")
输出:
<class 'dict'>
{'name': '小明', 'age': 18, 'sex': '女'}
2、拆包
拆包主要用于元组和字典类型参数的传递,在调用带有多值参数的函数时,使用拆包简化参数的传递
# 将一个元组类型变量传给形参时,函数调用时直接在元组变量实参前加 * 号
# 将一个字典类型变量传给形参时,函数调用时直接在字典变量实参前加 ** 号
def demo(*args,**kwargs):
print(args)
print(kwargs)
tup = ("python",1,2)
dic = {"语文":80,"数学":99,"地理":98}
# 调用时实参前必须加星号
demo(*tup,**dic)
输出:
('python', 1, 2)
{'语文': 80, '数学': 99, '地理': 98}