Python中*args、**args到底是什麼、有啥區別、怎麼用

調用函數時使用*和 **
假設有函數
def test(a, b, c)

test(*args):* 的作用其實就是把序列 args 中的每個元素,當作位置參數傳進去。比如上面這個代碼,如果 args 等於 (1,2,3) ,那麼這個代碼就等價於 test(1, 2, 3) 。

test(**kwargs):** 的作用則是把字典 kwargs 變成關鍵字參數傳遞。比如上面這個代碼,如果 kwargs 等於 {‘a’:1,’b’:2,’c’:3} ,那這個代碼就等價於 test(a=1,b=2,c=3) 。

定義函數參數時使用*和**

def test(*args):
  定義函數參數時 * 的含義又要有所不同,在這裏 *args 表示把傳進來的位置參數都裝在元組 args 裏面。比如說上面這個函數,調用 test(1, 2, 3) 的話, args 的值就是 (1, 2, 3) 。:

def test(**kwargs):
  類似的, ** 就是針對關鍵字參數和字典的了。 調用 test(a=1,b=2,c=3) 的話, kwargs 的值就是 {‘a’:1,’b’:2,’c’:3} 了。
 

#*args的用法:當傳入的參數個數未知,且不需要知道參數名稱時。
def func_arg(farg, *args):
    print("formal arg:", farg)
    for arg in args:
        print("another arg:", arg)
func_arg(1,"youzan",'dba','四塊五的妞')
print("-----------------------")
# 輸出結果如下:
# formal arg: 1
# another arg: youzan
# another arg: dba
# another arg: 四塊五的妞
# -----------------------


#**args的用法:當傳入的參數個數未知,但需要知道參數的名稱時(立馬想到了字典,即鍵值對)
def func_kwargs(farg, **kwargs):
    print("formal arg:", farg)
    for key in kwargs:
        print("keyword arg: %s: %s" % (key, kwargs[key]))
func_kwargs(1 ,id=1, name='youzan', city='hangzhou',age ='20',四塊五的妞是 = '來日方長的')
print('--------------------')
# 輸出結果如下:
# formal arg: 1
# keyword arg: id: 1
# keyword arg: name: youzan
# keyword arg: city: hangzhou
# keyword arg: age: 20
# keyword arg: 四塊五的妞是: 來日方長的

#利用它轉換參數爲字典
def kw_dict(**kwargs):
    return kwargs
print(kw_dict(a=1,b=2,c=3))
# 輸出結果如下:
# --------------------
# {'a': 1, 'b': 2, 'c': 3}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章