pytho傳參kwargs及用法詳解
pytho傳參kwargs
Python代碼中有很多類似的用法,第一次接觸的時(shí)候還是有很多疑惑的,為了方便記憶,因此梳理了一下。
# 使用模型進(jìn)行推理
with torch.no_grad():
outputs = model(**encoded_texts)對(duì)于一個(gè)dict類型的變量**encoded_texts是取出value的值,而不考慮鍵。
def test_func(**kwargs):
a = kwargs["a"]
b = kwargs["b"]
print(a) # [1, 2, 3]
print(b) # hello test
dct = {"a": [1, 2, 3], "b": "hello test"}
test_func(**dct)函數(shù)傳參的時(shí)候簡(jiǎn)化傳參形式,無(wú)需指定參數(shù)名。
Python 函數(shù)的參數(shù)傳遞 *args和 **kwargs
知識(shí)點(diǎn):
- 在函數(shù)調(diào)用時(shí),*會(huì)以單個(gè)元素的形式解包一個(gè)元祖,使其成為獨(dú)立的參數(shù)。
- 在函數(shù)調(diào)用時(shí),**會(huì)以鍵/值對(duì)的形式解包一個(gè)字典,使其成為獨(dú)立的關(guān)鍵字參數(shù)。
def f(a,*args):
print(args)
f(1,2,3,4)
?```
輸出為:(2, 3, 4)
?```雖然傳入1,2,3,4,但是解包為(1),(2,3,4),其中a是1,args是剩下的。
在python中,當(dāng)*和**符號(hào)出現(xiàn)在函數(shù)定義的參數(shù)中時(shí),表示任意數(shù)目參數(shù)。*arg表示任意多個(gè)無(wú)名參數(shù),類型為tuple;**kwargs表示關(guān)鍵字參數(shù),為dict,使用時(shí)需將arg放在*kwargs之前,否則會(huì)有“SyntaxError: non-keyword arg after keyword arg”的語(yǔ)法錯(cuò)誤。
再看看**kwargs的參數(shù)傳遞的例子
def f(**kargs):
print(kargs)
f(a=1,b=2) # 實(shí)際傳入?yún)?shù)是兩個(gè),但是給包裹在一起
?```output:
{'a': 1, 'b': 2}
?```
def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
# 傳入4個(gè)參數(shù),自動(dòng)將后兩位 拼接到成字典
person('Adam', 45, gender='M', job='Engineer')
?```output
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
?```再看看*args 和 **kwargs混合的例子
def h(a,*args,**kwargs):
print(a,args,kwargs)
h(1,2,3,x=4,y=5)
# 丟進(jìn)去不確定參數(shù)的包裹:1,2,3,x=4,y=5
# 解包:1 -a
# 解包:(2,3) -*args
# 解包:{'x': 4, 'y': 5} -**kwargs
?```output
1 (2, 3) {'x': 4, 'y': 5}
?```到此這篇關(guān)于pytho傳參kwargs的文章就介紹到這了,更多相關(guān)pytho傳參kwargs內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
理解Python中的global與nonlocal關(guān)鍵字
本文主要解釋了Python中g(shù)lobal和nonlocal關(guān)鍵字的作用和用法,global關(guān)鍵字用于修改全局變量,但要謹(jǐn)防破壞封裝性;nonlocal關(guān)鍵字用于修改外部嵌套函數(shù)中的變量,適用于閉包和裝飾器場(chǎng)景,兩者各有使用場(chǎng)景,使用時(shí)需注意變量作用域和定義情況2026-04-04
Python基于進(jìn)程池實(shí)現(xiàn)多進(jìn)程過(guò)程解析
這篇文章主要介紹了Python基于進(jìn)程池實(shí)現(xiàn)多進(jìn)程過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
TensorFLow 數(shù)學(xué)運(yùn)算的示例代碼
這篇文章主要介紹了TensorFLow 數(shù)學(xué)運(yùn)算的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python進(jìn)程間通訊與進(jìn)程池超詳細(xì)講解
進(jìn)程彼此之間互相隔離,要實(shí)現(xiàn)進(jìn)程間通信(IPC),multiprocessing模塊主要通過(guò)隊(duì)列方式,隊(duì)列:隊(duì)列類似于一條管道,元素先進(jìn)先出,需要注意的一點(diǎn)是:隊(duì)列都是在內(nèi)存中操作,進(jìn)程退出,隊(duì)列清空,另外,隊(duì)列也是一個(gè)阻塞的形態(tài)2022-12-12
python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼分享
在本篇文章里小編給大家整理的是關(guān)于python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼內(nèi)容,有興趣的朋友們可以參考下。2020-08-08
Python?Flask?實(shí)現(xiàn)?HTML?文件壓縮案例代碼(9?級(jí)壓縮)
這篇文章主要介紹了Python?Flask?實(shí)現(xiàn)?HTML?文件壓縮案例代碼(9?級(jí)壓縮),本案例是基于?Python?Flask?進(jìn)行搭建,所以需要提前搭建一個(gè)?Flask?項(xiàng)目環(huán)境,有?app.py?文件和?templates/index.html?文件即可,需要的朋友可以參考下2023-01-01

