如何在 Python 中向函式傳遞關鍵字引數?
在 Python 中,函式通常透過向其傳遞零個、一個或多個引數來呼叫。可以使用兩種型別的引數:
位置引數
關鍵字引數。
位置引數取決於它們傳遞給函式的順序;它們是程式語言中更常見的引數型別。而關鍵字引數則以鍵值對的形式傳遞,以便使用“=”運算子將引數對映到一個鍵,這使得 Python 直譯器可以忽略位置。
在本文中,我們將討論關鍵字引數/引數以及如何在 Python 中將它們傳遞給函式。
關鍵字引數
關鍵字引數是一種特殊型別的引數,以 (鍵,值) 對的形式傳遞給函式。它們也稱為命名引數。當這些引數傳遞給函式時,它們的出現順序或位置無關緊要。
它們的工作原理類似於 Python 中的字典。
示例
讓我們看一個小的示例程式,它演示瞭如何在函式中使用關鍵字引數。在這裡,我們定義了一個名為“team”的函式,並傳遞了兩個引數“name”和“company”。
def team(name, company): print(name, "is working at", company) team(company = "Google", name = 'John')
輸出
上面程式的輸出如下所示:
John is working at Google
示例
現在,讓我們在呼叫函式時交換引數的位置,並檢查它是否會影響輸出。
def team(name, company): print(name, "is working at", company) team(name = 'John' , company = "Google",)
輸出
執行程式後,顯示的輸出將與上一個程式的輸出完全相同。因此,這些引數的位置無關緊要。
John is working at Google
傳遞多個引數
正如我們已經知道的,只要為它們定義了相應的引數,Python 函式就可以接受任意數量的引數。
但是,並非總是可以根據傳入的值在函式中定義引數的數量。我們通常將大量資料值作為引數傳遞給函式。如果我們輸入 100 個值,則不可能在函式中定義 100 個變數。
在這種情況下,我們使用 Python 的預定義特殊符號,即 *args 和 **kwargs。args 指的是傳遞給函式的位置引數,而 kwargs 指的是關鍵字引數。
**kwargs
**kwargs 允許我們將靈活數量的關鍵字引數傳遞給函式。為此,我們只需在函式定義和呼叫期間分別在引數或引數名稱之前使用雙星號 (**) 即可。
與 args 類似,kwargs 是一種習慣用法;只要我們在其前面放置 (**) 符號,我們就可以使用任何其他名稱。
示例
讓我們看一個 **kwargs 的示例。我們正在建立一個名為“person”的函式,並將所有詳細資訊作為 **kwargs 引數傳遞給它。
def Person(**kwargs): for key, value in kwargs.items(): print(key,"->", value) Person(Name = 'Rahul', Sex = 'Male', Age = 38, City = 'Hyderabad', Mobile = 123456789)
輸出
上面程式的輸出顯示在下面。我們可以更清楚地看到我們使用上面程式中的 Name、Sex、Age、City 和 Mobile 關鍵字列印的資料。因此,使用者不會感到困惑,並且節省了編碼時間。因此,kwargs 是與引數值關聯的關鍵字。
Name -> Rahul Sex -> Male Age -> 38 City -> Hyderabad Mobile -> 123456789
示例
另一個演示 **kwargs 引數用法的示例如下所示。在這裡,我們以字典格式顯示輸出。
def print_kwargs(**kwargs): print(kwargs) print_kwargs(kwargs_1="Whale", kwargs_2=5, kwargs_3= False, kwargs_4=2.1)
輸出
執行上面程式後,輸出將顯示如下:
{'kwargs_1': 'Whale', 'kwargs_2': 5, 'kwargs_3': False, 'kwargs_4': 2.1}