函数
函数与方法
Python中函数与方法是有区别的。
函数在module中定义,方法在class中定义并与对象关联。
对于C来说只有函数;对于C++、php和Python来说有函数和方法;对于Java来说只有方法。
基本形式
def function(params):
do something...
默认参数
函数调用时可使用较少的参数,未被使用的默认参数使用默认值,默认参数需要在参数声明的后面
def function(param1,param2=10):
print (param1,param2)
#输出 apple 10
function('apple')
关键字参数
形式:function(key=value)
使用关键字参数,函数调用时参数的顺序可与声明时不一致,Python解释器可用参数名匹配参数值,参数名必须存在。
def printinfo( name, age ):
print ("Name:", name)
print ("Age ", age)
printinfo( age=50, name="miki" );
不定长参数
方法可接收不定数量的多个参数。
*args表示任意多个无名参数,函数内部为一个tuple;
**kwargs表示任意多个关键字参数,函数内部为一个dict。
def concat(*args, sep="/"):
print (sep.join(args))
#结果:sun/earth/moon
concat('sun','earth','moon')
匿名函数
Python使用lambda表达式创建匿名函数。
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
- lambda只能有一个表达式,返回值即是表达式的结果。
lambda表达式的形式:
lambda [arg1 [,arg2,.....argn]]:expression
关键字lambda 表示匿名函数,冒号前面的 arg 表示函数参数。
lambda x: x * x即等效于:
def f(x):
return x * x
返回值
return后不带值,返回None。
return后带值,返回该值。
函数返回多个值,实际上返回是一个包含结果的tuple:
def top3(list):
list.sort(reverse=True)
return list[0],list[1],list[2]
a,b,c=top3([45,2,56,12,90])
#输出90 56 45
print(a,b,c)