Python函数参数的几种类型

位置参数

函数调用时,实参默认按照位置顺序传递,需要个数的和形参匹配,按位置传递 的参数,称为:“位置参数”。

例子:

def one(a,b,c):
    print(a,b,c)

one(1,2,3)
one(1,2)  #这里报错,位置参数不匹配

返回值:

>>>Traceback (most recent call last):
      1 2 3
       File "D:/B_project/Kong_Ji/git_data/z_Script/gove.py", line 116, in <module>
         one(1,2)  #这里报错,位置参数不匹配
      TypeError: one() missing 1 required positional argument: 'c'

默认值参数

可以为某些参数设置默认值,这样这些参数传递时就是可选的,称为“默认值参数”,默认值参数放在位置参数后面。

例如:

def one(a,b,c=10):
    print(a,b,c)

one(11,22)
one(11,22,33)

返回:

>>>11 22 10

      11 22 33

命名参数

也可以按照形参的名称传递参数,称为:“命名参数”,也称“关键字参数”

def one(a,b,c):
    print(a,b,c)

one(c=11,a=22,b=33) #命名参数
one(10,11,22)       #位置参数

返回:

>>>11 33 11
      10 11 22

可变参数*

可变参数指的是“可变数量的参数”。分为两种情况:

1.*param(一个星号),将多个参数收集到一个“元组”对象里面

2.**param(两个星号),将多个参数收集到一个“字典”对象中

例子(测试可变参数处理,元组和字典两种方式):

#传递参数形成元组
def f01(a,b,*c):
    print(a,b,c)

f01(8,9,10,11,22,33)


#传递参数形成字典
def f02(a,b,**c):
    print(a,b,c)

f02(10,20,name="xx",gae=18)


#传递参数形成字典和元组
def f03(a,b,*c,**d):
    print(a,b,c,d)

f03(10,20,30,40,name='xx',age=18)


返回:

>>>8 9 (10, 11, 22, 33)
      10 20 {'name': 'xx', 'gae': 18}
      10 20 (30, 40) {'name': 'xx', 'age': 18}

强制命名参数

在带星号的“可变参数”后面增加新的参数,必须是“强制命名参数”。

例子:

def one(*a,b,c):
    print(a,b,c)

#one(2,3,4)  #会报错,由于a是可变参数,将2,3,4全部收集,造成b和c没有赋值

one(2,b=3,c=4)

返回:

>>>(2,) 3 4 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章