python學習總結(jié)

[TOC]

python中函數(shù)參數(shù)前的*與**的區(qū)別

在python的函數(shù)中經(jīng)常能看到輸入的參數(shù)前面有一個或者兩個星號:例如

def foo(param1, *param2):
def bar(param1, **param2):

這兩種用法其實都是用來將任意個數(shù)的參數(shù)導入到python函數(shù)中。

單星號(*):*agrs
將所以參數(shù)以元組(tuple)的形式導入:
例如:

>>> def foo(param1, *param2):
        print param1
        print param2
>>> foo(1,2,3,4,5)
1
(2, 3, 4, 5)

雙星號():kwargs
將參數(shù)以字典的形式導入

>>> def bar(param1, **param2):
        print param1
        print param2
>>> bar(1,a=2,b=3)
1
{'a': 2, 'b': 3}

此外,單星號的另一個用法是解壓參數(shù)列表:

>>> def foo(bar, lee):
        print bar, lee
>>> l = [1, 2]
>>> foo(*l)
1 2

當然這兩個用法可以同時出現(xiàn)在一個函數(shù)中:例如

>>> def foo(a, b=10, *args, **kwargs):
        print a
        print b
        print args
        print kwargs
>>> foo(1, 2, 3, 4, e=5, f=6, g=7)
1
2
3 4
{'e': 5, 'g': 7, 'f': 6}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。