iT邦幫忙

0

Python 函數參數詳解:位置參數、關鍵字參數、預設參數、*args 和 **kwargs

  • 分享至 

  • xImage
  •  

什麼是函數參數?

在 Python 中,函數參數是*傳遞*給函數的*數據*。這些數據可以是數字、字符串、列表、字典等任何 Python 對象

函數參數的種類

1. 位置參數 (positional arguments)

  • 按照定義的順序依次傳遞。
  • 必須按照正確的順序傳遞。
def greet(name, age):
    print(f"Hello, {name}! You are {age} years old.")
greet("Alice", 30)
#在使用函數並輸入參數時,直接給值的話 就要按照定義的順序

2. 關鍵字參數 (keyword arguments)

  • 使用參數名稱傳遞值,順序可以任意。
  • 可以為參數提供預設值。
def greet(name, greeting="Hello"):
    print(f"{greeting}, {name}!")
greet(name="Bob", greeting="Hi")
#如果在使用函數並使用name和greeting來賦值,順序就可以任意

3. 預設參數 (default arguments)

  • 在函數定義時為參數提供一個預設值。
  • 如果調用函數時沒有為該參數傳值,則使用預設值。
def power(base, exponent=2):
    return base ** exponent
power(3)
#9
power(3,4)
#81

power(3)如果只輸入一個值,就會帶到第一個參數base
power(3,3)如果只輸入2個值,第一個值就會帶到第一個參數,第2個值就會帶到第2個參數

4. 可變長度參數

*args: 收集任意數量的位置參數,以元組形式傳遞。
**kwargs: 收集任意數量的關鍵字參數,以字典形式傳遞。

def my_function(*args, **kwargs):
    print(args)
    print(kwargs)

參數組合使用

  • 位置參數必須在關鍵字參數之前。
  • *args 必須在關鍵字參數之前。
  • **kwargs 必須在所有其他參數之後。
def my_function(a, b=2, *args, **kwargs):
    # ...

為什麼使用不同的參數類型?

  • 位置參數: 簡單直觀,適合參數順序固定的情況。
  • 關鍵字參數: 提高可讀性,允許任意順序傳遞參數,可以提供預設值。
  • *args**kwargs: 提供靈活性,可以處理任意數量的參數。

注意事項

  • 預設值只賦值一次。
  • 可變對象作為預設值時要注意,因為多次調用會修改同一個對象。
  • *args**kwargs可以一起使用,但順序不能錯。

小結

函數參數是函數的重要組成部分。
不同的參數類型提供了不同的功能和靈活性。
根據實際需求選擇合適的參數類型。

def create_user(name, age, city="Taipei", **kwargs):
    user = {"name": name, "age": age, "city": city}
    for key, value in kwargs.items():
        user[key] = value
    return user

user = create_user("Alice", 30, email="alice@example.com")
print(user)

這個範例展示了如何組合使用不同的參數類型,以實現一個功能更強大的函數。

總結

通過對 Python 函數參數的深入了解,我們可以寫出更加靈活、可讀性更高的代碼。合理地使用位置參數、關鍵字參數、預設參數、*args 和 kwargs,可以大大提高我們的編程效率。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言