*args 和 **kwargs 的區別

 

截取百度裏的兩個答案:html

這是Python函數可變參數 args及kwargs函數

*args表示任何多個無名參數,它是一個tuple測試

**kwargs表示關鍵字參數,它是一個dictspa

測試代碼以下:code

1 def foo(*args,**kwargs): 2 print 'args=',args 3 print 'kwargs=',kwargs 4 print '**********************'
5 if __name__=='__main__': 6 foo(1,2,3) 7 foo(a=1,b=2,c=3) 8 foo(1,2,3,a=1,b=2,c=3) 9 foo(1,'b','c',a=1,b='b',c='c')

執行結果以下:orm

 1 args= (1, 2, 3)  2 kwargs= {}  3 **********************
 4 args= ()  5 kwargs= {'a': 1, 'c': 3, 'b': 2}  6 **********************
 7 args= (1, 2, 3)  8 kwargs= {'a': 1, 'c': 3, 'b': 2}  9 **********************
10 args= (1, 'b', 'c') 11 kwargs= {'a': 1, 'c': 'c', 'b': 'b'} 12 **********************

 

百度回答2:這是一種特殊的語法,在函數定義中使用*args和**kwargs傳遞可變長參數。*args用做傳遞非命名鍵值可變長參數列表(位置參數); **kwargs用做傳遞鍵值可變長參數列表。htm

示例 *argsblog

1 def test_var_args(farg, *args): 2     print "formal arg:", farg 3     for arg in args: 4         print "another arg:", arg 5  
6 test_var_args(1, "two", 3)
1 # 輸出
2 formal arg: 1
3 another arg: two 4 another arg: 3

示例 **kwargsget

1 def test_var_kwargs(farg, **kwargs): 2     print "formal arg:", farg 3     for key in kwargs: 4         print "another keyword arg: %s: %s" % (key, kwargs[key]) 5  
6 test_var_kwargs(farg=1, myarg2="two", myarg3=3)
1 # 輸出
2 formal arg: 1
3 another keyword arg: myarg2: two 4 another keyword arg: myarg3: 3

 

練習:io

 1 print("ex18.命名,變量,代碼,函數")  2 
 3 #print_two是函數名,(*args)是參數,print()是函數體
 4 def print_two(*args):  5 arg1,arg2 = args  6 print("arg1:%r,arg2:%r"%(arg1,arg2))  7 
 8 def print_two_again(arg1,arg2):  9 print("arg1:%r,arg2:%r"%(arg1,arg2)) 10 
11 def print_one(arg1): 12 print("arg1:%r"%arg1) 13 
14 def print_none(): 15 print("I got nothin'.") 16 
17 #如下爲函數參數
18 print_two("Zed","solo") 19 print_two_again("Zed","Shaw") 20 print_one("First!") 21 print_none() 22 
23 '''
24 注意事項: 25 一、函數定義是以def開始 26 二、函數名稱後面跟着括號,和冒號 27 三、函數名稱能夠是字符和下劃線組成 28 四、括號內包含參數,且參數是以逗號隔開;也能夠沒有參數 29 五、函數體前有縮進,4個空格 30 六、參數內容能夠重複,參數名稱不能夠同樣 31 七、函數結束位置取消了縮進 32 '''

 

 

原文:https://zhidao.baidu.com/question/367559039025445444.html

相關文章
相關標籤/搜索