Python 中的 kwargs
我們可以為函式提供不同的引數。這些引數在函式中用於執行一些所需的工作。
在程式設計中,我們用函式名指定括號中的引數。我們可以在函式定義中指定所需的引數數量。
在 Python 中使用 **kwargs
讓函式獲取任意數量的關鍵字引數
Python 中有關鍵字、位置和任意引數。Python 提供了一個有趣的特性 **kwargs
。
它是代表關鍵字引數的標準符號。我們可以使用 this 為函式提供任意數量的引數。
這裡 kwargs
只是一個變數名,可以用任何其他有效的變數名替換。這裡的主要部分是**
運算子。
**
在 Python 中被稱為解包操作符。我們用它來解壓 Python 中的字典。
我們還有 *
運算子,它可以解包列表、元組和其他可迭代物件,它們可以使用這兩者來為函式提供任意數量的引數。
kwargs
背後的主要概念是函式將接收這些引數打包到一個物件中。它將解包所有元素並根據需要在函式中使用它們。
首先,讓我們用 *
運算子來演示這一點。如前所述,它用於從可迭代的列表或元組中解包元素。
最基本的使用方法是在函式定義中提供*kwargs
。這樣,我們可以為函式指定任意數量的引數。
def fun(*l):
for i in l:
print(i)
fun(1,2,3)
輸出:
1
2
3
在 Python 中呼叫函式時使用 *l
引數解包引數
在上面的示例中,我們使用函式的 *l
引數來解包多個引數並列印它們。
類似地,*l
可用於在呼叫函式時解包引數。在這裡,角色顛倒了。
def fun(x,y):
print(x,y)
l = [5,7]
fun(*l)
輸出:
5 7
在上面的例子中,我們不能直接向函式傳送一個列表。所以我們在呼叫函式時解壓它。
現在讓我們討論**kwargs
。使用這種方法,我們可以為函式提供許多關鍵字引數。
引數作為字典的鍵值對傳遞,並使用 **
運算子在函式中解包。
def fun(**kwargs):
for i in kwargs:
print(i, kwargs[i])
fun(a = 1, b = 2, c = 3)
輸出:
a 1
b 2
c 3
我們使用 **kwargs
將多個關鍵字引數傳遞給上例中的函式。
我們還可以同時使用這兩種方法來指定多個引數和位置引數。
def fun(x,**kwargs):
print("Multiple Keyword Arguments")
for i in kwargs:
print(i, kwargs[i])
print("Positional arguments", x)
fun(10, a = 1, b = 2, c = 3)
輸出:
Multiple Keyword Arguments
a 1
b 2
c 3
Positional arguments 10
確保關鍵字引數的順序很重要,因為在 Python 3.6 中,會記住它們的插入順序。
我們還可以在 Python 3 中使用 *
運算子進行擴充套件的可迭代解包。我們可以使用賦值語句左側的運算子。
我們也可以使用它在函式呼叫中提供多個引數。
def fun(x,z,*l):
print("Multiple Arguments")
for i in l:
print(i)
print("Positional arguments", x,z)
x, *y, z = [1,2,3,4]
fun(x,z, *y)
輸出:
Multiple Arguments
2
3
Positional arguments 1 4
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn