理解Python函數和方法

什麼是函數?shell

       函數是抽象出的一組執行特定功能的重複代碼,通俗理解,就是對一些重複的工做進行封裝和而後直接調用,避免重複造輪子。數組


 

Python中的函數如何定義?函數

       使用def關鍵字,結構以下:ui

def 函數名(參數列表):
    函數體
    return語句(可省略)

  其中return 語句表示函數的結束,在函數內部return語句後的語句不會執行,return關鍵字後面客戶以跟變量,表達式等表示向函數調用方的返回值,也能夠不加變量或者直接省略return語句,表示向函數調用方返回None對象。spa

函數如何調用?code

  調用方法:函數名加括號,括號裏傳入參數列表,以下所示:對象

def fun(a):
    print(a)



執行結果

>>> fun(3)
3blog


 

函數的參數有幾種類型?ci

  函數的參數按照傳入的要求和數量、類型的不一樣,通常分爲如下幾種:it

  1.位置參數(必選參數)

def fun(arg1,arg2,arg3):
    pass

  位置參數是最多見的參數類型,如上圖所示,arg1,arg2,arg3是三個位置參數,顧名思義,在調用時必須嚴格按照定義的位置順序傳入參數,不然會形成結果錯誤甚至報錯。

  2.默認參數

  若是某個參數的值大部分狀況下都爲某一特定的值,爲調用方便,可爲其設默認值,在調用時若是該參數取默認值,可不用傳入該參數,以下所示:

def fun(name,college="NEU"):
    print(name,"graduated from",college)
執行結果

>>> fun("I")
I graduated from NEU

    注意:

    函數定義時,默認參數必須在必須參數(沒有默認值的)以後,

    默認參數必須指向不可變對象(即爲其賦的值必須是不可變對象),纔可保證每次執行時默認參數的值相同。

    默認參數能夠簡化函數的調用,也可提升函數更新(增長新參數)後的向下兼容性,即爲新增長的參數設置默認值從而不用改寫原來函數的調用方式。

    3.可變參數

  "可變」指的是傳入的參數個數可變,可變參數在定義時使用"    *args     "(args可改成任意變量名),調用時可傳入任意數量的參數,會自動組裝成元組,由args變量名指向。以下所示:

def fun(*args):
    print(agrs)

執行結果
>>> fun(1,2,3)
(1, 2, 3) 

  4.關鍵字參數

  所謂關鍵字參數,即爲在傳入時必須指明參數名和參數值,即以「參數名=值 」的形式傳入參數

  和可變參數相似,關鍵字參數支持傳入任意個數的參數,區別是傳入的必須是關鍵字參數,在執行時於自動將傳入的關鍵字參數組裝成字典,關鍵字參數在定義時使用" **kwargs " 亦可換成其餘變量名,指向組裝好的字典),以下所示:

def fun(**kwargs):
    print(kwargs)


執行結果
>>> fun(a=1,b=2)
{'a': 1, 'b': 2}

  5.命名關鍵字參數

  關鍵字參數不會限制關鍵字參數的名字,不利於參數名的檢查,命名關鍵字能指定傳入的關鍵字參數的名稱,若是傳入得關鍵字參數名稱不符,將會報錯。和關鍵字參數**kw不一樣,命名關鍵字參數須要一個特殊分隔符**後面的參數被視爲命名關鍵字參數。定義的格式爲「*,參數名1,參數名2「。以下所示:

def fun(*,a,b):
    print("success")

    
>>> fun()
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    fun()
TypeError: fun() missing 2 required keyword-only arguments: 'a' and 'b'
>>> fun(a=1)
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    fun(a=1)
TypeError: fun() missing 1 required keyword-only argument: 'b'
>>> fun(a=1,b=2)
success

    若是函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就再也不須要一個特殊分隔符*了(命名關鍵字在定義時亦可設默認值):

def person(name, age, *args, city, job="SE"):
    print(name, age, args, city, job)

 以上幾種參數在函數定義時,按何種順序?

  參數定義的順序必須是:必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。


 

 函數和方法的區別?

  函數和方法本質上沒有不一樣,通常來講類中定義的函數叫方法,其餘狀況下都叫函數。

相關文章
相關標籤/搜索