Python中關于?*args與**args的用法及說明
關于 *args與**args的用法
*args 和 **kwargs主要用于函數(shù)定義,你可以將不定數(shù)量的參數(shù)傳遞給某個函數(shù)。
*args
*args 不定參數(shù)(不定的意思是指,預先并不知道,函數(shù)使用者會傳遞多少個參數(shù)給你)
*args是用來發(fā)送一個非鍵值對的可變數(shù)量的參數(shù)列表給一個函數(shù)。
*args的用法:當傳入的參數(shù)個數(shù)未知,且不需要知道參數(shù)名稱時。
代碼如下:
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 允許將不定長度的鍵值對作為參數(shù)傳遞給一個函數(shù)。如果想要在一個函數(shù)里處理帶名字的參數(shù),應該使用 **kwargs。
代碼如下:
#利用它轉換參數(shù)為字典 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,區(qū)別在哪里?
有點蒙,好像見過,但是不知道具體的意思。所以回來查了一下資料,做一下筆記。
總的來說,*args代表任何多個無名參數(shù),返回的是元組;**kwargs表示關鍵字參數(shù),所有傳入的key=value,返回字典;
*args和**kwargs的用途
*args 和 **kwargs 主要用于函數(shù)定義, 可以將不定數(shù)量的參數(shù)傳遞給一個函數(shù)。
*args 是用來發(fā)一個非鍵值對的可變數(shù)量的參數(shù)列表給一個函數(shù); kwargs允許將一個不定長度的鍵值對,作為參數(shù)傳遞給一個函數(shù)。如果需要在一個函數(shù)中處理帶名字的參數(shù)時,此時就應該使用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)中,函數(shù)里參數(shù)對應的數(shù)值為:a=1,*args表示剩下的沒有名稱的參數(shù),**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參數(shù)必須要列在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
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Win10下python3.5和python2.7環(huán)境變量配置教程
這篇文章主要為大家詳細介紹了Win10下python3.5和python2.7環(huán)境變量配置教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-09-09python實現(xiàn)的登陸Discuz!論壇通用代碼分享
這篇文章主要介紹了python實現(xiàn)的登陸Discuz!論壇通用代碼分享,需要的朋友可以參考下2014-07-07Python實現(xiàn)處理apiDoc轉swagger的方法詳解
這篇文章主要為大家詳細介紹了Python實現(xiàn)處理apiDoc轉swagger的方法,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解一下2023-02-02Python微服務開發(fā)之使用FastAPI構建高效API
微服務架構在現(xiàn)代軟件開發(fā)中日益普及,它將復雜的應用程序拆分成多個可獨立部署的小型服務。本文將介紹如何使用 Python 的 FastAPI 庫快速構建和部署微服務,感興趣的可以了解一下2023-05-05