Python自學之函數參數總結

Python中定義的函數可以使用必選參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數,使用的順序也服從上述排列。

1-必選參數

def func(x):
    print(x)

2-默認參數

def func(x,n = 2):
    print(x,n)

調用時:


>>>func(20)
20 2
>>>func(20,5)
20 5

3-可變參數

def func(*value):
    print(value)

可變參數,顧名思義就是可以傳入0-任意個參數,也可以傳入一個list或tuple
調用:

>>>func(1,2,3)
1 2 3
>>>b = [1,2,3]
>>>func(*b)
1 2 3

4-關鍵字參數
關鍵字參數與可變參數可以說大部分一樣,不同的是可變參數會將傳入的參數組裝成list,而關鍵字參數會將傳入的參數組裝成dict

def func(n,**dict):
    print(n,dict)

調用

>>>func(12,x='1',y='2')
12 {'x':'1',y':'2'}
>>>dic = {'x':'1','y':'2'}
>>>func(12,**dic)
12 {'x':'1',y':'2'}

5-命名關鍵字參數
命名關鍵字參數的作用是限制傳入的關鍵字參數,也就是說你只能輸入特殊固定的鍵值對,如果函數定義中有可變參數,那麼命名關鍵字參數緊跟其後,如果沒有可變參數,需要增加一個 ,*,來區分位置參數和關鍵字參數

def func(x,y,*,height,width):   #限制只傳入key = height和width
    print(x,y,height,width)

Tips
1-默認參數必須指向不變對象;(list是可變對象)
原因:函數在定義的時候默認參數的值就已經是個佔用內存的變量了,函數被調用時,如果默認參數是可變的list,那麼在每次調用函數之後默認參數的值都會發生改變。
Eg.

def add_list(l =[]):    #傳入的默認參數是可變參數list
    l.append('end')     
    print(l)

可以這樣修改:

def add_list(l = None):     #將默認參數置爲None不可變參數
    if l is None:           #如果選擇使用默認參數,就置爲list
        l = []
    l.append('end')
    print(l)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章