Python中關(guān)于?*args與**args的用法及說(shuō)明
關(guān)于 *args與**args的用法
*args 和 **kwargs主要用于函數(shù)定義,你可以將不定數(shù)量的參數(shù)傳遞給某個(gè)函數(shù)。
*args
*args 不定參數(shù)(不定的意思是指,預(yù)先并不知道,函數(shù)使用者會(huì)傳遞多少個(gè)參數(shù)給你)
*args是用來(lái)發(fā)送一個(gè)非鍵值對(duì)的可變數(shù)量的參數(shù)列表給一個(gè)函數(shù)。
*args的用法:當(dāng)傳入的參數(shù)個(gè)數(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')
# 輸出結(jié)果如下:
# formal arg: 1
# another arg: youzan
# another arg: dba
# another arg: hello**kwargs
**kwargs 傳入鍵值對(duì)(例如:num1=11,num2=22)
**kwargs 允許將不定長(zhǎng)度的鍵值對(duì)作為參數(shù)傳遞給一個(gè)函數(shù)。如果想要在一個(gè)函數(shù)里處理帶名字的參數(shù),應(yīng)該使用 **kwargs。
代碼如下:
#利用它轉(zhuǎn)換參數(shù)為字典
def kw_dict(**kwargs):
? ? return kwargs
print(kw_dict(a=1,b=2,c=3))
# 輸出結(jié)果如下:
# {'a': 1, 'b': 2, 'c': 3}*args和**kwargs是什么意思
去面試的時(shí)候,做了一道筆試題——什么是*args和**kwargs,區(qū)別在哪里?
有點(diǎn)蒙,好像見(jiàn)過(guò),但是不知道具體的意思。所以回來(lái)查了一下資料,做一下筆記。
總的來(lái)說(shuō),*args代表任何多個(gè)無(wú)名參數(shù),返回的是元組;**kwargs表示關(guān)鍵字參數(shù),所有傳入的key=value,返回字典;
*args和**kwargs的用途
*args 和 **kwargs 主要用于函數(shù)定義, 可以將不定數(shù)量的參數(shù)傳遞給一個(gè)函數(shù)。
*args 是用來(lái)發(fā)一個(gè)非鍵值對(duì)的可變數(shù)量的參數(shù)列表給一個(gè)函數(shù); kwargs允許將一個(gè)不定長(zhǎng)度的鍵值對(duì),作為參數(shù)傳遞給一個(gè)函數(shù)。如果需要在一個(gè)函數(shù)中處理帶名字的參數(shù)時(shí),此時(shí)就應(yīng)該使用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ù)對(duì)應(yīng)的數(shù)值為:a=1,*args表示剩下的沒(méi)有名稱的參數(shù),**kwargs表示剩余的鍵值對(duì)。
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)
同時(shí)使用*args和kwargs時(shí),*args參數(shù)必須要列在kwargs前,否則會(huì)報(bào)錯(cuò)。
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
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python學(xué)習(xí)之字典的創(chuàng)建和使用
這篇文章主要為大家介紹了Python中的字典的創(chuàng)建與使用,包括使用字典(添加、刪除、修改等操作),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06
一文詳解如何從根本上優(yōu)雅地解決VSCode中的Python模塊導(dǎo)入問(wèn)題
有時(shí)你可能會(huì)遇到這種問(wèn)題,明明用pip安裝好了一個(gè)python模塊,但在VScode中總是顯示錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于如何從根本上優(yōu)雅地解決VSCode中的Python模塊導(dǎo)入問(wèn)題的相關(guān)資料,需要的朋友可以參考下2024-07-07
python中threading超線程用法實(shí)例分析
這篇文章主要介紹了python中threading超線程用法,實(shí)例分析了Python中threading模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05
PyPDF2讀取PDF文件內(nèi)容保存到本地TXT實(shí)例
這篇文章主要介紹了PyPDF2讀取PDF文件內(nèi)容保存到本地TXT實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
安裝pyecharts1.8.0版本后導(dǎo)入pyecharts模塊繪圖時(shí)報(bào)錯(cuò): “所有圖表類型將在 v1.9.0 版本開(kāi)始
這篇文章主要介紹了安裝pyecharts1.8.0版本后導(dǎo)入pyecharts模塊繪圖時(shí)報(bào)錯(cuò): “所有圖表類型將在 v1.9.0 版本開(kāi)始強(qiáng)制使用 ChartItem 進(jìn)行數(shù)據(jù)項(xiàng)配置 ”的解決方法,需要的朋友可以參考下2020-08-08
python基于Selenium的web自動(dòng)化框架
這篇文章主要介紹了python基于Selenium的web自動(dòng)化框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

