cccyyys 发表于 2021-6-17 10:01

【笔记】参数的类型

参数的类型
1、位置参数
概念:函数调用时,实参默认按照位置顺序传递,需要个数和形参匹配,按照位置传递的参数。
def f(a,b,c):
    print(a,b,c)

f(10,20,30)
运行结果为:10 20 30
这就是一个简单地位置参数,实参按照位置进行传递,形参与实参必须一一对应,否则会报错。
2、默认值参数
概念:我们可以在某些参数中设置默认值,这样这些参数在传递时是可选的。
def f1(a,b,c=5,d=6):#默认值参数
    print(a,b,c,d)
   
f1(10,20)
f1(10,60,19)#两种都不会报错,因为c和d都有默认值
运行结果为:10 20 5 6
10 60 19 6
这是一个默认值参数,大家可以看到,我在调用的时候,实参是2个或者3个的时候都没有报错,这是因为c、d都有默认的值,我们只需要按照位置顺序把前面两个参数定义好,后面两个参数根据实际情况可写可不写。
3、命名参数
概念:按照形参的名称传递参数,叫做“命名参数”。
def f2(a,b,c):
    print(a,b,c)

f2(10,20,30)#位置参数
f2(c=100,a=20,b=50)#命名参数
运行结果为:10 20 30
20 50 100
4、可变参数
概念:可变参数值的是“可变数量的参数”。分为*param(一个星号):将多个参数收集到一个“元组”对象中;**param(两个星号),将多个参数收集到一个“字典”对象中
def f3(a,b,*c,**d):
    print(a,b,c,d)

f3(10,50,5,6,7,8,name='cys',age=18)
f3(a=5,b=4,c=(10,8,7,6),d={'name':'cys','age':18})
运行结果为:10 50 (5, 6, 7, 8) {'name': 'cys', 'age': 18}
5 4 () {'c': (10, 8, 7, 6), 'd': {'name': 'cys', 'age': 18}}
这是一个可变参数,注意引用参数的时候不要像命名参数这样引用,否则c会是一个空的元组,d默认是字典对象,一旦像命名参数一样引用的话,c=(10,8,7,6),d={'name':'cys','age':18}会默认保存到d这个字典对象中,导致c取不到值。
5、强制命名参数
概念:在带星号的“可变参数”后面增加新的参数,必须在调用的时候强制命名参数
def f4(*a,b,c):#强制命名参数
    print(a,b,c)
   
f4(2,3,b=5,c=10)
该参数在调用时因为元组在前,不能确定元组的数据在哪个位置截止,所以在传递b和c的时候,必须命名。
关于可变参数,不太确定我说的对不对,f3(a=5,b=4,c=(10,8,7,6),d={'name':'cys','age':18})这是我自己敲的时候试了一遍,本以为a,b,c,d都会出来,但是运行完之后c和d的值都被放到字典里了,不太明白原理,欢迎大佬过来讲解。

Spa495 发表于 2021-6-17 10:29

学习了,谢谢楼子
页: [1]
查看完整版本: 【笔记】参数的类型