python基礎--引數組*args和**kwargs的區別
對於*args和**kwargs在函式中我們可以稱之為引數組,但是這兩個還是有區別的
- *args的功能:------接收N個位置引數,轉換成元組tuple形式
- **kwargs的功能------接收N個關鍵字引數,轉換成字典dict形式
- 位置引數一定要在關鍵字引數之前,也就是(*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和**kwargs? Python 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