[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
128會員
213內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
你可能也想看
Google News 追蹤
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
ITS python認證內容含蓋六大主題
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
主要來講宣告函式跟箭頭函式 : 宣告函式(Function Declaration) 語法: function functionName(parameters) { return result; } 特點: 使用 function 關鍵字 函式名稱是必需的 存在函式
ITS python認證內容含蓋六大主題
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。