函數

函數與方法

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