目录
位置参数
函数调用时, 实参默认按位置顺序传递, 需要个数和形参匹配; 按位置传递的参数, 称为”位置参数”;
默认值参数
我们可以为某些参数设置默认值, 这样这些参数在传递是就是可选的; 称为”默认值参数”; 默认值参数放到位置参数后面;
命名参数
我们可以按照参数的名称传递参数, 称为”命名参数”, 也称”关键字参数”;
可变参数
可变参数指的是”可变数量的参数”; 分为两种情况:
=> *param(一个星号), 将多个参数收集到一个’元组’对象中;
=> **param(两个星号), 将多个参数收集到一个’字典’对象中;
强制命名参数
在带星号的”可变参数”后面增加新的参数, 必须是”强制命名参数”;
#测试位置参数
def f1(a,b,c):
print(a,b,c)
f1(2,3,4)
# f1(2,3) #参位置参数对象参数少了就会报错
print("*"*30)
#测试默认值参数
def f2(a,b,c=10,d=100):
print(a,b,c,d) #默认值参数必须位置普通位置参数后面
f2(8,9)
f2(1,2,999)
f2(1,1,1,1) #有默认值,有值就覆盖,没有值就输出默认值
print("*"*30)
#测试命名参数
def f3(a,b,c):
print(a,b,c)
f3(1,2,3)#位置参数
f3(c=10,b=100,a=98)#命名参数
print("*"*30)
#测试可变对象参数处理(元组,字典两种方式)
def f4(a,b,*c):
print(a,b,c)
f4(1,2,3,4,5,6,7,8)
def f5(a,b,**c):
print(a,b,c)
f5(1,2,name="张三",age=18,sex="男")
def f6(a,b,*c,**d):
print(a,b,c,d)
f6(8,9,12,2,1,1,1,2,765,name='小红',sex='女')
print("*"*30)
#测试强制命名参数的使用
def test(*a,b,c):
print(a,b,c)
# test(1,2,3) #会报错,由于a是可变参数,将1,2,3全部收集,造成b和c没有赋值
test(1,2,3,b='张三',c='小明')
输出:
D:\wwwroot\pyiteam\venv\Scripts\python.exe D:/wwwroot/pyiteam/mypy01.py
2 3 4
******************************
8 9 10 100
1 2 999 100
1 1 1 1
******************************
1 2 3
98 100 10
******************************
1 2 (3, 4, 5, 6, 7, 8)
1 2 {'name': '张三', 'age': 18, 'sex': '男'}
8 9 (12, 2, 1, 1, 1, 2, 765) {'name': '小红', 'sex': '女'}
******************************
(1, 2, 3) 张三 小明
Process finished with exit code 0