中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-31 11:06:13 來源:億速云 閱讀:205 作者:Leah 欄目:編程語言

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有哪些用法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎赉特旗| 宁阳县| 离岛区| 凤城市| 章丘市| 江阴市| 精河县| 贵定县| 克什克腾旗| 社旗县| 社会| 登封市| 宁蒗| 镶黄旗| 霍山县| 中方县| 越西县| 巩留县| 舟曲县| 吐鲁番市| 盐边县| 沿河| 错那县| 利川市| 普格县| 巩义市| 长海县| 鄂尔多斯市| 景泰县| 嵩明县| 德清县| 府谷县| 吉安县| 敦煌市| 航空| 嘉禾县| 科技| 芦溪县| 大渡口区| 长子县| 南昌市|