首頁 > 軟體

Python中關於 *args與**args的用法及說明

2023-11-01 10:00:15

關於 *args與**args的用法

*args 和 **kwargs主要用於函數定義,你可以將不定數量的引數傳遞給某個函數。

*args

*args 不定引數(不定的意思是指,預先並不知道,函數使用者會傳遞多少個引數給你)

*args是用來傳送一個非鍵值對的可變數量的參數列給一個函數。

*args的用法:當傳入的引數個數未知,且不需要知道引數名稱時。

程式碼如下:

def func_arg(farg, *args):
    print("formal arg:", farg)
    for arg in args:
        print("another arg:", arg)
func_arg(1,"youzan",'dba','hello')


# 輸出結果如下:
# formal arg: 1
# another arg: youzan
# another arg: dba
# another arg: hello

**kwargs

**kwargs 傳入鍵值對(例如:num1=11,num2=22)

**kwargs 允許將不定長度的鍵值對作為引數傳遞給一個函數。如果想要在一個函數裡處理帶名字的引數,應該使用 **kwargs。

程式碼如下:

#利用它轉換引數為字典
def kw_dict(**kwargs):
    return kwargs
print(kw_dict(a=1,b=2,c=3))

# 輸出結果如下:
# {'a': 1, 'b': 2, 'c': 3}

*args和**kwargs是什麼意思

去面試的時候,做了一道筆試題——什麼是*args和**kwargs,區別在哪裡?

有點蒙,好像見過,但是不知道具體的意思。所以回來查了一下資料,做一下筆記。

總的來說,*args代表任何多個無名引數,返回的是元組;**kwargs表示關鍵字引數,所有傳入的key=value,返回字典;

*args和**kwargs的用途

*args 和 **kwargs 主要用於函數定義, 可以將不定數量的引數傳遞給一個函數。

*args 是用來發一個非鍵值對的可變數量的參數列給一個函數; kwargs允許將一個不定長度的鍵值對,作為引數傳遞給一個函數。如果需要在一個函數中處理帶名字的引數時,此時就應該使用kwargs了。

def test(a,*args,**kwargs):
    print(a)
    print(args)
    print(kwargs)
test(1,3,5,7,c='2',d=4)

1
(3, 5, 7)
{‘c’: ‘2’, ‘d’: 4}

在test(1,3,5,7,c=‘2’,d=4)中,函數裡引數對應的數值為:a=1,*args表示剩下的沒有名稱的引數,**kwargs表示剩餘的鍵值對。

def ak(*args,**kwargs):
    print('args=',args)
    print('kwargs=',kwargs)
    print('***************************************')
if __name__=='__main__':
    ak(2,4,6,8)
    ak(a=2,b=4,c=6,d=8)
    ak(2,4,6,8,a=1,b=3,c=5)
    ak('x', 2, None, a=4, b='6', c=8)
    #ak('a', a=1, 1, None, b='2', c=3)

同時使用*args和kwargs時,*args引數必須要列在kwargs前,否則會報錯。

ak('a', a=1, 1, None, b='2', c=3)

File “”, line 1
ak(‘a’, a=1, 1, None, b=‘2’, c=3)
^
SyntaxError: positional argument follows keyword argument

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com