首頁 >後端開發 >Python教學 >理解 Python 中的 *args 和 **kwargs

理解 Python 中的 *args 和 **kwargs

Susan Sarandon
Susan Sarandon原創
2025-01-16 22:16:13547瀏覽

Understanding *args and **kwargs in Python

Python 中 *args 和 **kwargs 的妙用:彈性函數的秘訣

在 Python 中,*args**kwargs 是創建靈活函數的強大工具,它們允許函數接收可變數量的參數。當您事先不知道將傳遞給函數多少個參數時,這尤其有用。


什麼是 *args

*args 允許函數接受任意數量的位置參數。這些參數儲存在一個元組中。

範例:

<code class="language-python">def print_numbers(*args):
    for number in args:
        print(number)

print_numbers(1, 2, 3, 4, 5)</code>

輸出:

<code>1
2
3
4
5</code>

在這裡,您可以傳遞任意數量的數字,它們都將被列印。如果未傳遞任何參數,args 將只是一個空元組。


什麼是 **kwargs

**kwargs 允許函數接受任意數量的關鍵字參數。這些參數儲存在一個字典中,鍵是參數名稱,值是它們對應的值。

範例:

<code class="language-python">def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="New York")</code>

輸出:

<code>name: Alice
age: 25
city: New York</code>

在這裡,您可以傳遞任意數量的鍵值對。如果未傳遞任何關鍵字參數,kwargs 將只是一個空字典。


組合使用 *args**kwargs

您可以在同一個函數中同時使用 *args**kwargs。這允許您同時處理位置參數和關鍵字參數。

範例:

<code class="language-python">def describe_person(*args, **kwargs):
    print("Attributes:")
    for arg in args:
        print(f"- {arg}")

    print("\nDetails:")
    for key, value in kwargs.items():
        print(f"{key}: {value}")

describe_person("Friendly", "Helpful", name="Bob", age=30, city="Boston")</code>

輸出:

<code>Attributes:
- Friendly
- Helpful

Details:
name: Bob
age: 30
city: Boston</code>

在這裡,*args 收集位置參數(如 "Friendly" 和 "Helpful"),**kwargs 收集關鍵字參數(如 name="Bob" 和 age=30)。


簡單的記憶規則

  1. 當您需要傳遞可變數量的位置參數時,請使用 *args
  2. 當您需要傳遞可變數量的關鍵字參數時,請使用 **kwargs
  3. 函數簽章中的順序應始終為:
    • 常規位置參數
    • *args
    • 預設關鍵字參數
    • **kwargs

初學者實用範例

範例 1:一個用來增加數字的函數

<code class="language-python">def add_numbers(*args):
    total = sum(args)
    print(f"The sum is: {total}")

add_numbers(1, 2, 3, 4)
add_numbers(10, 20)</code>

輸出:

<code>The sum is: 10
The sum is: 30</code>

範例 2:按姓名問候人們

<code class="language-python">def greet_people(**kwargs):
    for name, greeting in kwargs.items():
        print(f"{greeting}, {name}!")

greet_people(Alice="Hello", Bob="Hi", Charlie="Hey")</code>

輸出:

<code>Hello, Alice!
Hi, Bob!
Hey, Charlie!</code>

範例 3:在購物清單中組合使用 *args**kwargs

<code class="language-python">def shopping_list(*items, **prices):
    print("Items to buy:")
    for item in items:
        print(f"- {item}")

    print("\nPrices:")
    for item, price in prices.items():
        print(f"{item}: ${price}")

shopping_list("Apples", "Bananas", Apples=2, Bananas=1.5, Oranges=3)</code>

輸出:

<code>Items to buy:
- Apples
- Bananas

Prices:
Apples: 
Bananas: .5
Oranges: </code>

結論

透過使用 *args**kwargs,您可以讓您的 Python 函數更加動態和靈活。這在處理輸入數量可能變化的程序時尤其有用。從小型專案開始嘗試這些功能,您會發現它們非常方便!

以上是理解 Python 中的 *args 和 **kwargs的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn