您好,登錄后才能下訂單哦!
Python中*args 和 **kwargs有哪些用法?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
1、*args的用法
*args和**kwargs主要用于函數定義。你可以將不定數量的參數傳遞給一個函數。這里的不定指的是預先并不知道函數使用者會傳遞多少個參數給你,所以在這個場景下使用這兩個關鍵字。*args是用來發送一個非鍵值對的可變數量的參數列表給一個函數.下面舉個例子幫你理解這個概念:
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' )
這會產生如下輸出:
first normal arg: yasoob
another arg through *argv: python
another arg through *argv: eggs
another arg through *argv : test
2、**kwargs的用法
**kwargs允許你將不定長度的鍵值對,作為參數傳遞給一個函數。 如果你想要在一個函數里處理帶名字的參數,你應該使用**kwargs。這里有個讓你上手的例子:
def greet_ me (**kwargs) :
for key, value in kwargs. items () :
print("{0} == {1}". format (key, value) )
>>> greet me (name="yasoob")
name == yasoob
現在你可以看出我們怎樣在一個函數里,處理了一個鍵值對參數了。這就是**kwargs的基礎,而且你可以看出它有多么管用。
3、使用*args和**kwargs來調用函數
假設你有這樣一個小函數:
def test_ _args_ kwargs (arg1, arg2, arg3) :
print ("arg1:",arg1)
print("arg2:", arg2) .
print ("arg3:",arg3)
你可以使用*args或** kwargs來給這個小函數傳遞參數。下面是怎樣做:
#口先使口 *args .
>>> args = ("two", 3, 5)
>>> test_ args_ kwargs (*args)
arg1: twO
arg2: 3
arg3: 5
# 現在使口 **kwargs:
>>> kwargs = {"arg3": 3, "arg2": "two", "arg1": 5}
>>> test_ args_ kwargs (** kwargs)
arg1: 5
arg2: two
arg3: 3
4、標準參數與*args、**kwargs在使用時的順序
那么如果你想在函數里同時使用所有這三種參數,順序是這樣的:
some_ func(fargs, *args, **kwargs)
5、什么時候使用Python中*args 和 **kwargs?
這還真的要看你的需求而定。最常見的用例是在寫函數裝飾器的時候。此外它也可以用來做猴子補丁。猴子補丁的意思是在程序運行時,(runtime)修改某些代碼。打個比方,你有一個類,里面有個叫get_ info的函數會調用一個API并返回相應的數據。如果我們想測試它,可以把API調用替換成一些測試數據。例如:
import someclass
def get_ info(self, *args) :
return "Test data"
someclass.get_ info = get_ info
看完上述內容,你們掌握Python中*args 和 **kwargs有哪些用法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。