在 Python 中,**(雙星號)和 *(星號)在引數中有什麼作用?


在建立函式時,單星號 (*) 用於接受並允許使用者傳遞任意數量的位置引數。同樣,雙星號 (**) 用於接受任意數量的關鍵字引數。

當我們不確定將傳遞多少個引數給函式,並且這些引數不是關鍵字時,可以使用單星號 (*)。

雙星號 (**kwargs) 可用於傳遞關鍵字,當我們不知道將傳遞多少個關鍵字引數給函式時,這些引數將儲存在一個名為 kwargs字典 中。

在定義函式時

讓我們建立一個可以接受任意數量的位置引數的 Python 函式

示例

建立一個可以接受任意數量的位置引數的 Python 函式。

def function(*args):
    result = 0
    for ele in args:
        result+=ele
    return result

print(function(1,2,3,4,5,6,7))
print(function(10,10,10)) 
print(function(1))

輸出

28
30
1

示例

讓我們看看雙星號運算子如何建立一個可以接受任意數量關鍵字引數的 Python 函式。

def function(**args):
    result = 0
    for k, v in args.items():
        result+=v
    return result

print(function(a=1,b=2,c=3,d=4))
print(function(i=10,j=100)) 

輸出

10
110

上面建立的函式用於傳遞任意數量的關鍵字引數,如果我們在呼叫函式時沒有指定關鍵字,例如 function(10,100),則會引發 TypeError 錯誤。

解包可迭代物件

使用星號運算子作為引數的另一種方法是在呼叫函式時解包引數可迭代物件。

示例

在這裡我們可以看到,單星號 '*' 運算子用於將資料結構(如 列表元組)解包成引數。

def sample_function(a, b, c):
    print(a, b, c)

l = [1, 2, 3]

sample_function(*l)

輸出

1 2 3

示例

以上示例說明了雙星號 '**' 運算子將 字典 解包成關鍵字引數。

def sample_foo(a, b):
    return 'a({}) + b({}) = {}'.format(a,b,a+b)

d = {'b': 100, 'a':10}

print(sample_foo(**d))

輸出

a(10) + b(100) = 110

更新於: 2023年9月9日

5K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.