[Python基礎]函式Function引數*args和**kwargs

[Python基礎]函式Function引數*args和**kwargs

更新於 發佈於 閱讀時間約 4 分鐘

[Python基礎]理解自定函式

先前我們在討論函式Fution定義時,引數(argument) 都是固定的數量的例如def add_numbers(a, b):,那如果要讓函式更彈性一點,是不是有可輸入不固定數量引數(argument) 用法呢?因為可能輸入的是Log的字串,可能會有不固定的數量的引數。

當你無法預測函式將接收到的引數數量時,就可以使用*args**kwargs來當函式的引數。

語法

*args: 用於處理可變數量的位置引數,將它們收集到一個元組中。

def example_function(*args):
for arg in args:
print(arg)

example_function(1, 2, "hello", [3, 4], 5)
# 輸出
# 1
# 2
# hello
# [3, 4]
# 5​

**kwargs: 用於處理可變數量的關鍵字引數,將它們收集到一個字典中。

def example_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

example_function(name="John", age=25, city="New York")
# 輸出
# name: John
# age: 25
# city: New York

程式範例

簡單函式計算總和:

def calculate_sum(*args):
return sum(args)

result = calculate_sum(1, 2, 3, 4, 5)
print(result)

# 輸出
# 15

動態生成訊息:

建立一個可同時輸入*args**kwargs的函式

def generate_message(*args, **kwargs):
message = "Hello, "

if args:
message += " ".join(map(str, args))

if kwargs:
message += " with details: " + ", ".join([f"{key}={value}" for key, value in kwargs.items()])

return message

message1 = generate_message("John", "Doe")
message2 = generate_message(name="Jane", age=30)
message3 = generate_message( "Doe",name="Jane", age=30)

print(message1)
print(message2)
print(message3)

# 輸出
# Hello, John Doe
# Hello, with details: name=Jane, age=30
# Hello, Doe with details: name=Jane, age=30

*args位置引數與**kwargs關鍵字引數有順序的問題嗎?

是的,在Python中,位置引數必須在關鍵字引數之前,否則引發錯誤,如下圖

positional argument follows keyword argument

positional argument follows keyword argument

其他補充

星號 * 用於表示可變數量的位置引數(*args)。這個星號在Python函式中被視為可變數量的位置引數,也可以定義*a123之類的名稱,儘管在使用 * 符號時可以不使用 args 這樣的名稱,但為了代碼的可讀性,建議還是使用慣例,即 *args

**也是跟上述差不多,建議還是使用慣例,即**kwargs。


謝謝大家觀看~ 希望大家會喜歡,喜歡的話可以給愛心~追蹤一下,不會漏掉之後的文章喔~






avatar-img
螃蟹_crab的沙龍
138會員
245內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言
avatar-img
留言分享你的想法!
螃蟹_crab的沙龍 的其他內容
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用