python之*args,**kw

python中函數的參數分爲普通參數、默認參數、非關鍵字參數、關鍵字參數,下面我們就具體討論下各個參數類型。

比如:

def func(a, b, c = 0, *args, **kw):
    print 'a = ' + str(a)   #str()函數是將a轉換成str類型,因爲 + 左右類型都應爲str類型
    print 'b = ' + str(b)
    print 'c = ' + str(c)
    print 'args: ' + str(args)
    print 'kw: ' + str(kw)
    for k in kw:
        print k + ':' + str(kw[k])

func(1, 2, 3, 4, 5, name='yjy', age=23)

參數a, b是普通參數;c是默認參數,不過默認參數可以被傳入的值覆蓋掉;*args是非關鍵字參數,形式爲 *x;**kw是關鍵字參數,關鍵字參數形式是 **x。

*args非關鍵字參數,其結果是一個tuple;**kw 關鍵字參數,其結果是一個dict。雖然非關鍵字參數和關鍵字參數都帶有 *,而且關鍵字參數還帶有兩個 **,但是隻要知道了他們的結果一個是tuple,一個是dict,在函數內部使用到這些參數時就無須有過多負擔,按照tuple,dict進行操作處理就可以了。

我是因爲原來學習C語言的main函數參數時,心裏總是覺得應該和C語言main函數的參數差不多。在瞭解了python的這兩個帶 * 的參數後,發現是不一樣的,python的這兩個 * 參數比C語言的簡單很多。

str() 函數是將a轉換爲str類型,因爲 + 左右都應該是 str 類型。在訪問關鍵字參數時,dict在遍歷時,是通過key訪問的,所以有kw[k].

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