实际参数
1 实参根据***位置**与形参相对应
2序列实参使用 拆分序列中的位置在根据位置与形参对应
参数过多时可以通过容器传递信息
2实参根据***名称***与形参相对应
代码可读性高
形式参数
默认 :可以不穿惨
位置 :必须传参
关键字实参 默认参数 实参可以随意传递
位置形参 实参必须提供信息
*元组后面的参数 实参必须是关键字实参
1. 语法:
def 函数名(元组形参名):
函数体
2. 作用:
收集多余的位置传参。
3. 说明:
一般命名为**'args’**
形参列表中最多只能有一个
**kwargs
- 语法:
def 函数名(**字典形参名):
函数体
2. 作用:
收集多余的关键字传参
3. 说明:
一般命名为’kwargs’
形参列表中最多只能有一个
参数自左至右的顺序
位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参
形参实参的区别
形参 出现在函数定义里面整个函数体都可以使用离开该函数体不能使用
实参 出现在主调函数中 进入被调函数后,实参变量也不能使用
实例
# 1. 默认参数:实参可以不传递
# (必须从又向左依次存在)
def fun01(p1="", p2=0, p3=0.0):
print(p1)
print(p2)
print(p3)
fun01()
fun01("悟空", 10, 5.6)
# 关键字实参 + 默认参数:实参可以随意传递
fun01(p2=100)
# 2. 位置形参:实参必须传递
def fun02(p1, p2, p3):
print(p1)
print(p2)
print(p3)
# 3. 星号元组形参:使用星号将实参合并为一个元组
# 作用: 位置实参数量无限
# 备注:只能有一个
def fun03(*args):
print(args)
fun03()
fun03(4, 54, 5, 65, 6)
# fun03(a=1, b=2, c=3) # 报错
# 4. 命名关键字形参:星号元组形参后面的参数
# 要求实参必须是关键字实参.
def fun04(*args, a, b=0):
print(args)
print(a)
print(b)
fun04(34, 45, 54, 56, 67, 87, a=1, b=2)
fun04(34, 45, 54, 56, 67, 87, a=1)
# 4. 命名关键字形参:星号后面的参数
# 要求实参必须是关键字实参.
def fun05(a, *, b=0, c=""):
print(a)
print(b)
fun05(5,b = 6,c = 7)
fun05(5,c = 7)
# print(*args, sep=' ', end='\n', file=None)
print(3,4,54,5,56,end = " ")
print(3,4,54,5,56,sep = "-",end = " ")
# print(3,4,54,5,56,"-"," ")
# 5. 双星号字典形参:关键字实参数量无限
def fun05(**kwargs):
print(kwargs)
fun05(a = 1,b = 2,c = 3)