關鍵字參數與非關鍵字參數(可變參數)詳解
學過php或者其他語言的同學都知道,php里面的參數不是個數不是可變的(只是很多時候是可以省略的,因為在函數定義的時候為參數設置了默認值)。但是在python里卻不是這樣,python里面運行可變參數的出現,參數中出現(*arg,**arg2)的形式。
今天我們來詳解一下這種用法:
例如:
def foo1(arg1,arg2,key1=1,key2=2,*arg,**keywords):
print "arg1 parameters is ",arg1
print "arg2 parameters is ",arg2
print "key1 parameter is ",key1
print "key2 parameter is ",key2
print "Arbitrary parameter is ", arg
print "keywords parameter is ",keywords
foo1(1,2,3,4,5,6,k1=1,k2=2,k3=3)
輸出:
arg1 parameters is 1
arg2 parameters is 2
key1 parameter is 3
key2 parameter is 4
arg parameter is (5, 6)
keywords parameter is {'k3': 3, 'k2': 2, 'k1': 1}
函數參數分為四部分:
arg1,arg2,key1,key2普通參數
*arg 非關鍵字參數列表
**keywords 關鍵字參數列表
函數聲名部分,參數的四個部分不可顛倒位置,可以沒有其中某幾部分。
python函數的這種特性使得函數參數更加靈活,參數個數也不受限制。
注意:這種用法常用在python的裝飾器中,至於什么是裝飾器,它是python里面非常重要的一個特性,我會在以后詳解
python開發就去PythonTab中文網—PythonTab :Python中文開發者社區門戶
文章轉自:http://www.pythontab.com/html/2012/pythonjichu_1224/54.html