python函数传参的四种方式及四种形参定义方式
位置传参
序列传参
关键字传参
字典关键字传参
1、位置传参
定义函数时的形参与调用函数时的实参按照位置一一对应
例子:
def fun1(a,b,c):
print(a,b,c)
fun1(1,2,3)
输出结果:1 2 3
2、序列传参
调用函数时用*号将序列拆解开,再通过位置传参一一对应
例子:
def fun2(a,b,c):
print(a,b,c)
l=[1,2,3]
t=(4,5,6)
fun2(*l)
fun2(*t)
输出结果:
E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/canshu.py
1 2 3
4 5 6
Process finished with exit code 0
3、关键字传参
是指在调用函数时,给形参赋值作为实参
例子:
def fun3(a,b,c):
print(a,b,c)
fun3(a=1,b=2,c=3)
输出结果:1 2 3
4、字典关键字传参
实参为字典,用**符号将字典拆解,再通过关键字传参
例子:
def fun4(a,b,c):
print(a,b,c)
d={'a':1,'b':2,'c':3}
fun4(**d)
输出:1 2 3
综合传参:
函数的传参方式在能确定实参和形参一一对应的情况下,可以任意组合
注:综合传参和序列传参先传递,然后是关键字传参,字典关键字传参
缺省参数
语法:
def 函数名(形参名1=值1,形参名2=值2,形参名3=值3):
函数内容
例子:
def fun1(a=10,b=53,c=86):
print(a,b,c)
fun1(20)
输出:20 53 86
四种形参定义方式
1、位置形参
2、星号元组形参
3、命名关键字形参
4、双星号字典形参
1、位置形参
语法:
def 函数名(形参1,形参2.。。)
语句块
2、星号元组传参
语法:
def 函数名(*元组形参名):
语句块
作用:收集多余的位置传参
例子:
def fun1(*args):
print(args)
fun1(10,20,30,40)
fun1(*[1,2,3,4,5])
输出结果:
E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/quesheng.py
(10, 20, 30, 40)
(1, 2, 3, 4, 5)
Process finished with exit code 0
3、命名关键字形参
在调用函数时,调用者实参必须是关键字传参或者字典关键字传参
因为命名关键字跟在*号元组传参后面,*号传参是不定数量的参数,所以后面的参数如果不指定,无法确定参数到底是传给谁
语法:
def fun(*args,a,b):
语句块
例子:
def fun1(a,b,*args,c): print(a,b,args,c) l=[60,70] fun1(10,20,*l,c=30)
输出结果:
E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/quesheng.py
10 20 (60, 70) 30
Process finished with exit code 0
4、双*号字典形参---------》收集多余的关键字参数
语法:
def fun(**kwagrs):
语句块
例子:
def fun1(**kwargs): print(kwargs) d={'name':'shangsan','age':18} fun1(**d)
输出结果:
E:\install\python3.7.3\python.exe F:/pycharm_workspace/day01/quesheng.py
{'name': 'shangsan', 'age': 18}
Process finished with exit code 0
函数参数说明
位置形参、星号元组形参、命名关键字形参、字典关键字形参可以混合使用,顺序如下:
1、位置形参
2、星号元组形参
3、命名关键字形参
4、字典关键字形参