在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,若是有多个参数的话,那么参数之间直接用逗号,
隔开python
案列:函数
# 利用函数的参数,定义一个能够完成任意两个数相加的函数 def add_num(a,b): c = a + b print(c)
函数定义了参数,那么调用函数的时候就须要传入参数spa
add_num(11,22) #运行结果 33
而咱们调用函数的时候传入的参数叫作实参,形参是用来接收实参的。code
上面咱们说了形参和实参,那么形参和实参在在定义和调用的时候,根据形式不一样有能够分为几类,blog
实参:位置参数、关键字参数class
def func(a,b,c): print(a) print(b) print(c) add_num(11,22,33) #运行结果 11 22 33
上述案列中,的函数的三个形参是按位置接收传入的实参,咱们把这样的传参的形式叫作位置参数,im
def func(a,b,c): print(a) print(b) print(c) add_num(11,c=99,b=33) #运行结果 11 33 99
调用函数函数的时候,实参经过参数名指定传给某个形参,这样的传参形式,咱们把它叫作关键字参数命名
注意:传参的时候先写位置参数,再写命名参数dict
形参能够分为三类:必备参数、默然参数、不定长参数img
在调用函数的时候必需要传的参数
def add(a,b): c=a+b print(c) add(11,22)
上面函数中的a,b就是必备参数,在调用的函数的时候必需要传,否则就会报错
调用函数的时候能够传能够不传,不传就用默认值
def func(a,b,c=99): print(a) print(b) print(c) func(11,22,33) print('-----------') func(55,66) #运行结果: 11 22 33 --------------- 55 66 99
经过上述案列中咱们能够发现,第一次调用的时候,咱们传入了三个参数,c打印出来的是咱们传入的值,第二次只传入了两个参数,这个时候c打印出来的是咱们定义的时候给它设置的默认值
注意:带有默认值的参数必定要位于参数列表的最后面。
*args
和 **kwargs
调用函数的时候能够传0个或者多个
*args
:接收多传入的位置参数,以元祖的形式保存def func(*args):
print(args)
func(33,44,55,66,77)
func(*(33,44,55,66,77))
#运行结果
(33,44,55,66,77)
(33,44,55,66,77)
*args
,args接收的是一个元祖;
调用的时候能够直接传入:func(33,44,55,66,77)
,
也能够能够先组装list或tuple,再经过*
拆包传入:func(*(33,44,55,66,77))
;
**kwargs
:接收多传入的关键字参数,以字典的形式保存def func(**kwargs): print(kwargs) func(e=33,h=44,f=55,d=66,c=77) func(**{'e':33,'h':44,'d':66,'c':77}) #运行结果 {'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77} {'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}
**kwargs
,kw接收的是一个字典;
关键字参数既能够直接传入:func(11,22,e=33,h=44,f=55,d=66,c=77)
,
也能够先组装dict,再经过**拆包
传入:func(**{'e':33,'h':44,'d':66,'c':77})
。
注意点:使用*args
和**kwargs
是Python的习惯写法,固然也能够用其余参数名,但最好使用习惯用法。