传递方式:
位置传参
序列传参
关键字传参
字典关键字传参
位置传参:
实际参数的对应关系和形式参数的对应关系是按位置依次对应
示例:
def mymin(a, b, c):
pass
mymin(1, 2, 3) #1, 2, 3位置对应关系传给a, b, c
说明:
实际参数和形式参数通过位置进行传递和匹配
实际参数和形式参数的个必须相同
序列传参:
序列传参是指在函数调用过程中,用*将序列拆解后按位置进行传递的传参方式
说明:
序列传参时,序列拆解的位置将与形参一一对应
序列的位置信息对应相应的参数位置
示例:
def myfun(a, b, c):
print(a)
print(b)
print(c)
s1 = [1, 2, 3]
s2 = (4, 5, 6)
s3 = 'abc'
#等同于myfun(s1[0], s1[1], s1[2])
myfun(*s1)
myfun(*s2)
myfun(*s3)
关键字传参:
是指传参时,按着形参名称给形参赋值
实参和形参按名称进行匹配
示例:
def myfun(a, b, c):
pass
myfun(b = 1, a = 2, c = 3) #2-->a 1-->b 3-->c
myfun(c = 10, b = 5, a = 1) #1-->a 5-->b 10-->c
说明:
实参和形参按着形参名进行匹配,可以不按位置进行匹配
字典关键字传参:
是指实参为字典,将字典用 ** 拆解后进行关键字传参的方式
说明:
字典的键名和形参名一致
字典的键名必须为字符串(且为标识符的命名方式)
字典的键名要在形参中存在
示例:
def myfun(a, b, c):
print(a, b, c)
d1 = {'c': 10, 'b': 20, 'a': 30}
myfun(**d1)
函数的综合传参:
函数的传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合
函数的位置传参要先于关键字传参
说明:
位置传参和序列传参可以混合使用且可以顺序颠倒
如:
myfun(100, *[200, 300])
myfun(*[100, 200], 300)
myfun(*[100], 200, *[300])
函数的关键字传参和字典关键字传参可以混合使用且顺序可以颠倒
如:
myfun(c=300, **{'b': 200, 'a': 100})
myfun(**{'b': 200, 'c': 300}, a=100)
位置传参和关键字传参可以混合使用,但位置传参要先于关键字传参:
如:
myfun(100, c=300, b=200)
myfun(10, b=20, **{'c': 30})