Python 中的雙星號運算子是什麼意思?


雙星號/星號 (*) 運算子在 Python 中具有多種含義。我們可以將其用作 指數運算子,用作函式 *kwargs,解包迭代器,以及用於合併字典。

指數運算子

對於數值資料,雙星號 (**) 用作指數運算子。讓我們來看一個例子,看看雙星號運算子如何在數值運算元上工作。

示例

下面的示例使用雙星號/星號 (**) 計算“a 的 b 次方”,其效果等同於 pow() 函式

a = 10
b = 2
result = a ** b
print("a**b = ", result)

輸出

a**b =  100

建立帶有 **kwargs 的函式

在定義函式時,雙星號 (**) 用於建立一個具有任意數量的 關鍵字 引數的 Python 函式。它只是一個可以接受任意數量關鍵字引數的函式。

示例

上面的示例定義為接受任意數量的關鍵字引數。

def fun(**kwargs):
    for k, v in kwargs.items():
        print('key = {}, value = {}'.format(k,v))

fun(a=10, b=2, c=9, d=3, e=6)

輸出

key = a, value = 10
key = b, value = 2
key = c, value = 9
key = d, value = 3
key = e, value = 6

解包迭代器

呼叫函式時,雙星號/星號 (**) 運算子可以用作引數來解包 關鍵字 引數。

要從 Python 字典 中同時解包鍵和值,可以使用雙星號運算子。

示例

使用雙星號 (**) 運算子,我們解包了字典並將鍵值對傳送到一個接受任意數量 關鍵字 引數的函式。

def foo(**kwargs):
    for key, value in kwargs.items():
        if value > 90:
            print(str(key) + " " + str(value))

d =  {'a': 100, 'b': 20, 'c': 96, 'd':101}
foo(**d)

輸出

a 100
c 96
d 101

合併字典

透過使用雙星號/星號運算子,我們可以合併 Python 中的兩個字典。

語法

New_dict = {**dict1, **dict2} 

上述語法可以透過解包現有字典的鍵值對來建立一個新字典。如果存在任何重複的鍵,則此方法會自動解決這些問題。

示例

下面的示例演示如何合併字典,字典物件之前的雙星號 **dict 可用於解包字典。

d1 = {'A': 10, 'B': 20}
d2 = {'C': 30, 'D': 40}
print('initial dictionaries d1 = {} and d2 = {}: '.format(d1,d2))

z = {**d1, **d2} 
print("Merged dictionary: ", z)

輸出

initial dictionaries d1 = {'A': 10, 'B': 20} and d2 = {'C': 30, 'D': 40}
Merged dictionary:  {'A': 10, 'B': 20, 'C': 30, 'D': 40}

更新於:2023年9月9日

9000+ 次檢視

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告