函數與方法
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)