溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中*args 和 **kwargs有哪些用法

發(fā)布時(shí)間:2020-07-31 11:06:13 來(lái)源:億速云 閱讀:197 作者:Leah 欄目:編程語(yǔ)言

Python中*args 和 **kwargs有哪些用法?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

1、*args的用法

*args**kwargs主要用于函數(shù)定義。你可以將不定數(shù)量的參數(shù)傳遞給一個(gè)函數(shù)。這里的不定指的是預(yù)先并不知道函數(shù)使用者會(huì)傳遞多少個(gè)參數(shù)給你,所以在這個(gè)場(chǎng)景下使用這兩個(gè)關(guān)鍵字。*args是用來(lái)發(fā)送一個(gè)非鍵值對(duì)的可變數(shù)量的參數(shù)列表給一個(gè)函數(shù).下面舉個(gè)例子幫你理解這個(gè)概念:

def test_ var_ args(f_ _arg, *argv) :

print ("first normal arg:", f_ arg)

for arg in argv :

print ( " another arg through *argv:" arg)

test_ var_ args(' yasoob',' python',' eggs' ,' test' )

這會(huì)產(chǎn)生如下輸出:

first normal arg: yasoob

another arg through *argv: python

another arg through *argv: eggs

another arg through *argv : test

2、**kwargs的用法

**kwargs允許你將不定長(zhǎng)度的鍵值對(duì),作為參數(shù)傳遞給一個(gè)函數(shù)。 如果你想要在一個(gè)函數(shù)里處理帶名字的參數(shù),你應(yīng)該使用**kwargs。這里有個(gè)讓你上手的例子:

def greet_ me (**kwargs) :

for key, value in kwargs. items () :

print("{0} == {1}". format (key, value) )

 

>>> greet me (name="yasoob")

name == yasoob

現(xiàn)在你可以看出我們?cè)鯓釉谝粋€(gè)函數(shù)里,處理了一個(gè)鍵值對(duì)參數(shù)了。這就是**kwargs的基礎(chǔ),而且你可以看出它有多么管用。

3、使用*args**kwargs來(lái)調(diào)用函數(shù)

假設(shè)你有這樣一個(gè)小函數(shù):

def test_ _args_ kwargs (arg1, arg2, arg3) :

print ("arg1:"arg1)

print("arg2:", arg2) .

print ("arg3:",arg3)

你可以使用*args** kwargs來(lái)給這個(gè)小函數(shù)傳遞參數(shù)。下面是怎樣做:

#口先使口 *args .

>>> args = ("two", 3, 5)

>>> test_ args_ kwargs (*args)

arg1: twO

arg2: 3

arg3: 5

# 現(xiàn)在使口 **kwargs

>>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}

>>> test_ args_ kwargs (** kwargs)

arg1: 5

arg2: two

arg3: 3

4、標(biāo)準(zhǔn)參數(shù)與*args、**kwargs在使用時(shí)的順序

那么如果你想在函數(shù)里同時(shí)使用所有這三種參數(shù),順序是這樣的:

some_ func(fargs, *args, **kwargs)

5、什么時(shí)候使用Python*args **kwargs?

這還真的要看你的需求而定。最常見(jiàn)的用例是在寫函數(shù)裝飾器的時(shí)候。此外它也可以用來(lái)做猴子補(bǔ)丁。猴子補(bǔ)丁的意思是在程序運(yùn)行時(shí),(runtime)修改某些代碼。打個(gè)比方,你有一個(gè)類,里面有個(gè)叫get_ info的函數(shù)會(huì)調(diào)用一個(gè)API并返回相應(yīng)的數(shù)據(jù)。如果我們想測(cè)試它,可以把API調(diào)用替換成一些測(cè)試數(shù)據(jù)。例如:

import someclass

def get_ info(self, *args) :

    return "Test data"

 

someclass.get_ info = get_ info

看完上述內(nèi)容,你們掌握Python中*args 和 **kwargs有哪些用法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI