一、位置参数
特点:调用函数时传入的参数与函数在接收参数时位置是保持一致的
如:
def add(x,y):
return x+y
add(3,7) #=> 10
二、关键字参数
特点:1.函数定义时必须指定默认值
2.函数调用时可以指定参数名
如:
def sub(x=0,y=0):
return x-y
sub() #=> 0
sub(y=1,x=7) #=> 6
#关键字参数也支持位置参数的调用方式,只要不指定参数名即可
sub(3,1) #=> 2
三、动态参数(变长参数)
1)动态位置参数
特点:1.参数名之前加上一个*符号
2.参数数量是可以动态变化的
3.只能动态接收位置参数
如:
def sum(*num):
temp=0
for n in num:
temp+=n
return temp
sum(1) #=> 1
sum(1,2) #=> 3
sum(1,2,3) #=> 6 #num是一个数组,它会接收所有的传入参数
2)动态关键字参数
特点:1.参数名之前加上两个**符号
2.参数数量是可以动态变化的
3.可以动态的接收关键字参数
如:
def foo(**kargv):
for k,v in kargv.items():
print (k,v)
foo(x=1,y=2,z=3)
#=> 'x', 1
#=> 'y', 2
#=> 'z', 3
四、匿名函数(lambda表达式)
特点:1.定义函数时没有函数名
2.定义匿名函数使用lambda关键字
3.参数:函数体(函数体不能显式地使用return语句)
如:
lambda x,y:x+y
功能等效为如下函数:
def foo(x,y):
return x+y
调用场景:
foo=lambda x:x
foo(1) #先赋值给一个变量,然后直接调用该变量
(lambda x:x)(1) #使用括弧 间接调用