1. 程式人生 > >python基礎--引數組*args和**kwargs的區別

python基礎--引數組*args和**kwargs的區別

對於*args和**kwargs在函式中我們可以稱之為引數組,但是這兩個還是有區別的

  1. *args的功能:------接收N個位置引數,轉換成元組tuple形式
  2. **kwargs的功能------接收N個關鍵字引數,轉換成字典dict形式
  3. 位置引數一定要在關鍵字引數之前,也就是(*args,**kwargs)

 請看如下例子:

>>> def fun1(x,*args):
	print(x)
	print(args)
>>> fun1(1,*(2,3,4,5,6))
1
(2, 3, 4, 5, 6)

對於位置引數*args,輸出的都是元組形式的結果.

另外,如果這樣呼叫也是可以的

>>> fun1(1,2,3,4,5)
1
(2, 3, 4, 5)

這裡就自動返回元組形式的結果。

對於**kwargs位置引數的例項如下:

>>> def fun2(name,**kwargs):
	print(name)
	print(kwargs)
>>> fun2('TOM',age=19,sex='F')
TOM
{'age': 19, 'sex': 'F'}

從上面就可以看到,kwargs輸出以字典形式。

對於*args和**kwargs的位置關係,可以從下面的程式碼看出

>>> def fun3(*args,**kwargs):
	print(args)
	print(kwargs)
>>> fun3(1,2,3,age=19,sex='F')
(1, 2, 3)
{'age': 19, 'sex': 'F'}

這個案例可以體現出位置引數必定要在關鍵字引數之前。

我們也可以這樣呼叫

>>> def fun3(x,*args,**kwargs):
	print(x)
	print(args)
	print(kwargs)
>>> fun3(1,2,3,age=19,sex='F')
1
(2, 3)
{'age': 19, 'sex': 'F'}

下面我們可以看下位置顛倒之後的結果

>>> fun3(age=19,sex='F',1,2,3)
SyntaxError: positional argument follows keyword argument

程式碼出現異常了,因此可以再次證明位置引數在關鍵字引數之前的原理
最後,通過這個關鍵字引數,我們也可以建立一個字典,程式碼如下:

>>> def fun4(**kwargs):
	return kwargs
 
>>> print(fun4(age=19,sex='F'))
{'age': 19, 'sex': 'F'}

我們只要把輸出賦給一個變數就行,一個字典便誕生。

相關推薦

python基礎--引數*args**kwargs區別

對於*args和**kwargs在函式中我們可以稱之為引數組,但是這兩個還是有區別的 *args的功能:------接收N個位置引數,轉換成元組tuple形式 **kwargs的功能------接收N個關鍵字引數,轉換成字典dict形式 位置引數一定要在關鍵字引數之前,

Python : 什麽是*args**kwargs[轉載]

detail ron 什麽 可變參數 什麽是 pri 結果 upd none 例子 def foo(*args, **kwargs):print ‘args = ‘, argsprint ‘kwargs = ‘, kwargsprint ‘

轉:Python: 什麽是*args**kwargs

tro pri turn keyword war 學python 使用 數組 word 今天學python時候發現一個是*args和**kwargs,args就是所有參數的數組,kwargs不知道是什麽意思,了解了一下~~kwargs就是當你傳入key=value是存儲的字

Python學習之路 —— *args **kwargs

轉載自部落格園: http://www.cnblogs.com/moodlxs/p/3232222.html 當函式的引數不確定時,可以使用*args 和**kwargs,*args 沒有key值,**kwargs有key值。 話不多說直接上程式碼 [python] de

【轉載】Python tips: 什麼是*args**kwargsPython tips: 什麼是*args**kwargs

轉自Python tips: 什麼是*args和**kwargs? 先來看個例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '------------------

python進階】*args **kwargs的用法

參考連結:https://eastlakeside.gitbooks.io/interpy-zh/content/args_kwargs/Usage_args.html 變數名不是最重要的,前面兩個*才是最重要的。 *args用法 *args用來發送一個非鍵值對的可變數量的引

Python基礎:關於星號元*args雙星號字典**kwargs作為實參的使用總結

許多初學者或Python愛好者可能都遇到過用星號元組*args和雙星號字典**kwargs作為實參來使用的困惑,這裡本人舉了幾個小例子來闡述一下總結心得。 1. 星號元組*args傳參,如 : def fn(a,b,c,d): print(a,b,c,

Python中*args**kwargs區別

注:《python核心程式設計第2版》的11.6可變長度的引數—章節中有詳細介紹。 python中我們經常見到,有些函式的引數中有*args和kwargs,那這兩個引數是什麼意思呢? 沒錯,*args和kwargs就是python中的可變引數。 可能很多人用了幾年的 Python 都沒真

Python中*args **kwargs的用法

ase 再次 使用 clas **kwargs sdn 知識庫 base *args 好久沒有學習Python了,應為工作的需要,再次拾起python,喚起記憶。 當函數的參數不確定時,可以使用*args 和**kwargs,*args 沒有key值,**kwargs有ke

Python進階----*args**kwargs,裝飾器的用法

pop reference value -- margin zoj 是什麽 ec2 多線程 關於多線程的一個問題 svn提交代碼的時間是什麽時候? 大家都開始C++0x了,我也來湊熱鬧,今天的主題是《調侃rvalue-reference》 新手c語言,求助break問

day04 python *args**kwargs

總結 調用 kaa 組成 其余 int sha pos 元組 # arg1+*args 函數調用的時候,會把第一個參數給arg1,其余的參數以元組(tuple)都給args def function1(arg1,*args): print(‘arg1=‘, ar

Python之*args**kwargs使用方法

*args **kwargs Python *args使用方法:#!/usr/bin/env python #-*- coding=utf-8 -*- def args(args,*kwargs): print (args) for arg in kwargs: pr

python函數——形參中的:*args**kwargs

拆分 默認 int 關鍵字 python valid col 關於 實參 多個實參,放到一個元組裏面,以*開頭,可以傳多個參數;**是形參中按照關鍵字傳值把多余的傳值以字典的方式呈現 *args:(表示的就是將實參中按照位置傳值,多出來的值都給args,且以元祖的方式呈現)

python基礎二之列表(列表(2))

這篇主要介紹一下列表的一些常用方法,其實在我看來,在學習基礎的時候,死記硬背才是捷徑。至於理解,假如都記不住是什麼,談理解就有點本末倒置了。從另一個方面來講,語言本身提供的API,直接拿來用就好了。何必增加自己的工作量呢。 1、append:列表的方法append用於將一個物件新增到列表末尾

python基礎二之列表(列表(1))

我們除了可以對列表執行序列的標準操作(索引、切片、相加、相乘、成員檢查等),還可以對列表進行其他的操作,如:賦值、刪除等。列表的特點之一是它是可以修改的,二而元組和字串則不能。 1、修改列表:給元素賦值 我們一般通過賦值的方式修改列表中的元素。即使用索引表示法給特定位置元素賦值。例如:

python基礎二之列表(序列相加、乘法、成員資格)

這篇文章記載序列相加、乘法、成員資格等內容。 1、序列相加 看下面的例子: number1=[1,2,3] number2=[4,5,6] add=number1+number2; print("add:{}".format(add)) str1=["hello"] str2=["w

python基礎二之列表(索引切片)

在python中,有幾種重要的操作可以適用於所有的序列,其中包括索引、切片、相加、相乘和成員資格檢查,另外Python中提供了一些內建函式,包含序列的長度,序列中最大值、最小值等。      1、索引:序列中的所有元素都有索引,且從0開始遞增。我們可以通過索引的

python基礎一之列表(容器)

        學習程式設計的童鞋,剛開始都會接觸一個詞:資料結構。對於資料結構每個人的定義可能不同。但基本可以總結為:資料結構是以某種方式(如:通過編號)組合起來的資料元素(如:數字、字元或者其他資料結構)的集合。 在python中,最基本的資料

python中的*args**kwargs(* 與 **)

個人總結:         在引數位置上的單星( * ):將引數中的元素合併成一個tuple,(所有非等式格式,都可以看作tuple的元素,字典,列表等都算)      &

談一談python中的魔法變數*args**kwargs

導讀 最近看了看github大佬寫的程式碼後,發現自己之前寫的程式碼就是個,沒有註釋,沒有封裝,沒有可讀性。哎,幸虧發現及時,現在正在寫一個新的任務,剛好可以好好弄弄架構和程式碼了 在弄程式碼期間發現了*args和**kwargs這兩個引數大佬們有時候經常用,當然最多的其實是在閱讀pytho