接受可變長度鍵值對作為引數的函式


可以在 Python 中定義接受可變長度鍵值對形式的引數的函式。這使得函式更加動態和通用,能夠處理各種輸入。當函式需要能夠處理任意或可選引數時,通常會使用此功能。本文件將介紹如何使用 **kwargs 和 ** 語法向函式傳送可變數量的引數。

語法

**kwargs** 語法表示函式接受任意數量的關鍵字引數,這些引數作為字典傳遞。

def function_name(**kwargs):
   # code block

演算法

  • 在函式簽名中使用 **kwargs** 引數定義函式。

  • 使用 ** 語法將字典解包到**命名變數**中。

  • 使用 for 迴圈遍歷 **kwargs** 字典中的項。

  • 使用**鍵名**訪問值。

示例

def print_values(**kwargs):
   for key, value in kwargs.items():
      print(key, value)

print_values(a=1, b=2, c=3)

輸出

a 1                     
b 2
c 3

示例

def concatenate(**kwargs):
   result = ""
   for key, value in kwargs.items():
      result += str(value)
   return result
print(concatenate(a="Hello ", b="World ", c="!"))

輸出

 Hello World !

示例

def calculate_average(**kwargs):
   values = [value for value in kwargs.values() if isinstance(value, int) or isinstance(value, float)]
   return sum(values) / len(values)

print(calculate_average(a=1, b=2.5, c="hello"))

輸出

1.75

解釋

print_values 函式使用 for 迴圈來顯示傳遞給它的任意數量的鍵值對,同時遍歷字典的 **items()** 方法。concatenate 方法將每個值連線到一個字串,然後再將所有作為鍵值對傳遞的項連線起來。而 calculate_average 函式只考慮數字值,在計算所有作為**鍵值對**提供的資料的平均值時。還要注意,你需要檢視 **isinstance()** 函式來確定一個值是否為數字。

如果我們想建立一個不僅接受一個人的姓名、年齡和位置,還接受其他鍵值對引數作為可選引數的函式,該怎麼辦?

def person_info(name, age, location, **kwargs):
   print("Name:", name)
   print("Age:", age)
   print("Location:", location)
    
   for key, value in kwargs.items():
      print(key.capitalize() + ":", value)

person_info("Alice", 25, "New York", occupation="Engineer", hobbies=["Reading", "Hiking"])

輸出

Name: Alice
Age: 25
Location: New York
Occupation: Engineer
Hobbies: ['Reading', 'Hiking']

在這個例子中,姓名、年齡和位置是三個必填引數。此外,還可以提供任意數量的其他可選鍵值對。我們遍歷 kwargs 字典的 items() 函式,並使用 for 迴圈準備鍵值對,然後打印出來。

應用

  • **建立可以更改的 API** − 透過在函式的 API 中包含可變長度鍵值對引數,客戶端可以傳遞函式可以以各種方式處理的其他資訊。

  • **管理非必要引數** − 可變長度鍵值對引數可以建立可選引數,並且函式定義可以包含必填引數和可選引數。因此,可以只使用必要的引數或使用許多額外引數來呼叫函式。

  • **從命令列解析引數** − 程式或指令碼的命令列引數可以使用 Python 內建的 argparse 模組來定義。該模組接受任意長度的鍵值對引數,允許使用者提供額外的引數。

結論

Python 強大的**可變長度鍵值對**引數使開發更具適應性和動態性的函式成為可能,因為它們提供了開發可以處理各種輸入的函式的方法,並且易於使用。透過使用此功能,你可以增強使用者體驗,以及程式碼的健壯性和適應性。

更新於: 2023年8月22日

412 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.