Python 中 * 和 ** 的用途
Najwa Riyaz
2023年1月30日
2021年7月10日
本文解釋了 Python 中 *
和 **
的用途。
在 Python 中,我們使用單星號 (*
) 和雙星號 (**
) 來表示可變數量的引數。
我們可以通過以下任一方式在 Python 函式中傳遞任意數量的引數。
- 位置引數(
*
) - 關鍵字引數(
**
)
Python 中*
的定義
在 Python 中使用符號 *
允許函式的位置引數/引數數量可變。
請按照以下示例進行操作。
def function_singleasterix(*someargs):
for i in someargs:
print(i)
現在,帶有 list
或 tuple
的驅動程式程式碼如下。
listdata=[ "Alex","Tom","John","Alice"]
function_singleasterix(listdata)
輸出:
['Alex', 'Tom', 'John', 'Alice']
如果你不希望使用者知道引數的名稱,請使用僅位置引數。
例如,建議在 API 中使用僅位置變數——如果引數名稱被修改,這可以避免在 API 發生任何變化時損壞。
Python 中**
的定義
在 Python 中使用符號 **
允許對函式使用可變數量的關鍵字引數/引數。請注意,後面的引數必須是對映(字典鍵值對)項,而不是元組或列表。
按照下面的示例程式碼。
def function_doubleasterix(**keywordargs):
print("The keys in the kwargs dicionary are -", keywordargs.keys())
print("The values in the kwargs dicionary are -", keywordargs.values())
print("--The key value assignment in the 'keywordargs' dictionary are as follows--")
for key, value in keywordargs.items():
print ("%s == %s" %(key, value))
在上面的示例中,keywordargs
與下面的程式中的字典相關聯。
function_doubleasterix(SNo001 ='Alex', SNo002 ='Tom')
輸出:
The keys in the 'keywordargs' dicionary are - dict_keys(['SNo001', 'SNo002'])
The values in the 'keywordargs' dicionary are - dict_values(['Alex', 'Tom'])
--The key value assignment in the 'keywordargs' dictionary are as follows--
SNo001 == Alex
SNo002 == Tom
在上面的示例中,**keywordargs
提供關鍵字引數作為字典鍵值對。
*
和 **
在 Python 函式呼叫中的使用
符號*
和**
也用於函式呼叫。使用它們將可變數量的引數傳遞給使用以下任一方法的函式。
- 一個列表 -
*
- 一個元組 -
*
- 一本字典 -
**
以下是你可以遵循的幾個示例。
使用變數 list
作為輸入呼叫函式。使用*
如下
varlist = ["Tom","John","Alice"]
functiondef(*varlist)
使用變數 dictionary
作為輸入呼叫函式。使用**
如下
vardict = {'a':"Tom",'b':"John",'c':"Alice"}
functiondef(**vardict)
使用變數 tuple
作為輸入呼叫函式。使用*
如下
vartuple = ("Tom","John","Alice")
functiondef(*vartuple)
以上所有情況的輸出是:
SNo1=Tom
SNo2=John
SNo3=Alice