赞
踩
函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。按位置传递的参数,称为:
“位置参数”。
- def f1(a,b,c):
- print(a,b,c)
- f1(2,3,4)
- f1(2,3) #报错,位置参数不匹配
- 执行结果:
-
- 234
- Traceback (most recent call last):
- File "E:\PythonExec\if_test01.py", line 5, in <module>
- f1(2,3)
- TypeError: f1() missing 1 required positional argument: 'c'
为某些参数设置默认值,这样这些参数在传递时就是可选的。称为“默认值参数”。
默认值参数放到位置参数后面。
- def f1(a,b,c=10,d=20): #默认值参数必须位于普通位置参数后面
- print(a,b,c,d)
- f1(8,9)
- f1(8,9,19)
- f1(8,9,19,29)
'运行
- 执行结果:
- 8 9 10 20
- 8 9 19 20
- 8 9 19 29
也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。
- def f1(a,b,c):
- print(a,b,c)
- f1(8,9,19) #位置参数
- f1(c=10,a=20,b=30) #命名参数
'运行
- 执行结果:
- 8 9 19
- 20 30 10
可变参数指的是“可变数量的参数”。分两种情况:
1. *param(一个星号),将多个参数收集到一个“元组”对象中。
2. **param(两个星号),将多个参数收集到一个“字典”对象中。
- def f1(a,b,*c):
- print(a,b,c)
- f1(8,9,19,20)
-
- def f2(a,b,**c):
- print(a,b,c)
- f2(8,9,name='gaoqi',age=18)
-
- def f3(a,b,*c,**d):
- print(a,b,c,d)
- f3(8,9,20,30,name='gaoqi',age=18)
'运行
- 执行结果:
- 8 9 (19, 20)
- 8 9 {'name': 'gaoqi', 'age': 18}
- 8 9 (20, 30) {'name': 'gaoqi', 'age': 18}
在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”。
- def f1(*a,b,c):
- print(a,b,c)
- f1(2,3,4) #会报错。由于 a 是可变参数,将 2,3,4 全部收集。造成 b 和 c 没有赋值。
- f1(2,b=3,c=4)
- 执行结果:
- (2,) 3 4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。