Python 關鍵字參數和可變參數


關鍵字參數

如果你有一些具有許多參數的函數,而你又希望只對其中的一些進行指定,那么你可以通過命名它們來給這些參數賦值——這就是python關鍵字參數(Keyword Arguments)——我們使用命名(關鍵字)而非位置(一直以來我們所使用的方式)來指定函數中的參數。

這樣做有兩大優點——其一,我們不再需要考慮參數的順序,函數的使用將更加容易。其二,我們可以只對那些我們希望賦予的參數以賦值,只要其它的參數都具有默認參數值。

案例(保存為 function_keyword.py):

def func(a, b=5, c=10):
    print('a is', a, 'and b is', b, 'and c is', c)

func(3, 7)
func(25, c=24)
func(c=50, a=100)

 

輸出:

$ python function_keyword.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50

 

它是如何工作的

名為 func 的函數有一個沒有默認參數值的參數,后跟兩個各自帶有默認參數值的參數。

在第一次調用python函數時,func(3, 7),參數 a 獲得了值 3,參數 b 獲得了值 7,而 c 獲得了默認參數值 10

在第二次調用函數時,func(25, c=24),由於其所處的位置,變量 a 首先獲得了值 25。然后,由於命名——即關鍵字參數——指定,變量 c 獲得了值 24。變量 b 獲得默認參數值 5

在第三次調用函數時,func(c=50, a=100),我們全部使用關鍵字參數來指定值。在這里要注意到,盡管 a 在 c 之前定義,但我們還是在變量 a 之前指定了變量 c

 

Python可變參數

 

有時你可能想定義的函數里面能夠有任意數量的變量,也就是參數數量是可變的,這可以通過使用星號來實現(將下方案例保存為 function_varargs.py):

def total(a=5, *numbers, **phonebook):
    print('a', a)

    #遍歷元組中的所有項目
    for single_item in numbers:
        print('single_item', single_item)

    #遍歷字典中的所有項目
    for first_part, second_part in phonebook.items():
        print(first_part,second_part)

print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))

 

輸出:

$ python function_varargs.py
a 10
single_item 1
single_item 2
single_item 3
Inge 1560
John 2231
Jack 1123
None

 

它是如何工作的

當我們聲明一個諸如 *param 的星號參數時,從此處開始直到結束的所有位置參數(Positional Arguments)都將被收集並匯集成一個稱為“param”的元組(Tuple)。

類似地,當我們聲明一個諸如 **param 的雙星號參數時,從此處開始直至結束的所有關鍵字參數都將被收集並匯集成一個名為 param 的字典(Dictionary)。

我們將在后面的章節探索有關Python元組和字典的更多內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM