基礎可先參考這片文章:
Python 函數參數詳解:位置參數、關鍵字參數、預設參數、*args 和 **kwargs
特性 | 位置參數 | 關鍵字參數 | *args |
**kwargs |
---|---|---|---|---|
傳遞方式 | 按照參數順序傳遞 | 使用參數名稱傳遞 | 任意數量位置參數存為元組 | 任意數量關鍵字參數存為字典 |
定義時的語法 | def func(a, b): |
def func(a=1, b=2): |
def func(*args): |
def func(**kwargs): |
接收的參數類型 | 固定數量的參數 | 固定或預設的關鍵字參數 | 不定長位置參數 | 不定長關鍵字參數 |
參數是否可選 | 否 | 是 | 是 | 是 |
使用場景 | 參數數量固定且順序重要 | 提高可讀性、提供預設值 | 接收任意數量位置參數 | 接收任意數量鍵值對參數 |
優先順序(定義順序) | 必須在 *args 和 **kwargs 之前 |
必須在 **kwargs 之前 |
在關鍵字參數之後 | 必須在所有其他參數之後 |
def my_function(*args):
for arg in args:
print(arg)
# 调用函数
my_function(1, 2, 3, "hello")
#1
2
3
hello
*args 會接收 1, 2, 3, "hello" 這幾個值,並將它們打包成一個 tuple。
然後,我們就可以通過遍歷這個 tuple 來處理這些參數。
def my_sum(*args):
result = 0
for num in args:
result += num
return result
total = my_sum(1, 2, 3, 4, 5)
print(total)
#15
#當你不知道函數會接收多少個參數時,就可以使用 *args。。
當我們需要迭代 *args
中的所有元素,並且同時需要知道迭代的次數(也就是 *args 中元素的數量)時,就會用到 len(*args)。
1.獲取元素數量並進行迭代:
def my_function(*args):
for i in range(len(args)):
print(f"元素 {i+1}: {args[i]}")
my_function(1, 2, 3, "hello")
#元素 1: 1
元素 2: 2
元素 3: 3
元素 4: hello
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, city="UK")
print(print_info)
#name: Alice
age: 30
city: UK
<function print_info at 0x7fea186ffd90>
*args
和 **kwargs
可以一起使用,但 *args
必須放在 **kwargs
前面。def my_function(*args, **kwargs):
print("Positional arguments:", args)
print("Keyword arguments:", kwargs)
my_function(1, 2, 3, name="Alice", age=30)
*args
與 **kwargs
的區別在 Python 函數中,*args
和 **kwargs
是用來處理可變長度參數的特殊語法。*args
: 用來接收任意數量的位置參數,這些參數會被打包成一個 tuple。**kwargs
: 用來接收任意數量的關鍵字參數,這些參數會被打包成一個 dictionary。
def my_function(*args, **kwargs):
print("位置參數:", args)
print("關鍵字參數:", kwargs)
my_function(1, 2, 3, a=10, b=20)
#位置參數: (1, 2, 3)
#關鍵字參數: {'a': 10, 'b': 20}
#可以與位置參數混合使用,但位置參數必須在關鍵字參數之前。