在 Python 中,**(雙星號)和 *(星號)在引數中有什麼作用?
在建立函式時,單個星號 (*) 用於接收並允許使用者傳遞任意數量的位置引數。同樣,雙星號 (**) 用於接收任意數量的關鍵字引數。
當我們不確定要傳遞給函式多少個引數且這些引數不是關鍵字時,可以使用單個星號 (*)。
雙星號 (**kwargs) 可用於傳遞關鍵字,當我們不知道將傳遞多少個關鍵字引數給函式時,這些關鍵字引數將儲存在一個名為 kwargs 的 dict 中。
在定義函式時
讓我們建立一個可以接收任意數量的位置引數的 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP