3. 函数的实参传递
形式参数(形参)和实际参数(实参)的概念
- 实际参数是给函数的数据,主打一个给,递出去。
- 形式参数是拿调用者的数据,主打一个接,用变量来绑定传过来的数据。
形式参数
- 定义:形式参数是在函数定义时声明的参数,他是临时变量(局部变量),用于接收调用函数时传递的参数值。
- 位置:形式参数出现在函数的定义中,位于函数名后面的括号内。
示例:
def myadd(x, y):
...
实际参数:
- 定义:实际参数是在函数调用时传递给函数的值或表达式。
- 位置:实际参数出现在函数调用时的括号中。
示例:
result = myadd(100, 200)
函数的调用实参传递方法
在调用函数时可以为函数提供数据,称之为实参传递。
Python 实际参数传递方式如下:
- 位置传参:
- 序列传参:用 * 将序列拆解后按位置进行传递的传参方式。
- 关键字传参
- 字典的关键字传参:将字典用 ** 拆解后进行关键字传参的传参方式。
位置传参说明
- 实际参数和形式参数通过位置进行传递和匹配。
- 实际参数的个数必须与形式参数的个数相同。
关键字传参说明 - 实参和形参按形参名进行匹配,可以不按位置进行匹配。
示例
# 此示例示意函数的实参传递方式
def myfunc(a, b, c):
print('a:', a)
print('b:', b)
print('c:', c)
# 位置传参
myfunc(1, 2, 3)
# 序列传参:用 * 将序列拆解后按位置进行传递的传参方式
mylist = [10, 20, 30]
myfunc(*mylist)
# 关键字传参
myfunc(c=300, b=200, a=100)
myfunc(b=222, c=333, a=111)
# 字典的关键字传参:将字典用 ** 拆解后进行关键字传参的传参方式
mydict = {'c':3000, 'a':1000, 'b':2000}
myfunc(**mydict)
# 综合传参
myfunc(100, c=300, b=200)
mylist2 = (100, 200)
mydict2 = {'c':300}
myfunc(*mylist2, **mydict2)
函数综合传参
说明
- 函数的传参方式,在能确定形参能唯一匹配到相应实参的情况下可以任意组合。
- 函数的位置传参要先于关键字传参。