python函數參數前面單星號(*)和雙星號(**)的區別


在python的函數中經常能看到輸入的參數前面有一個或者兩個星號:例如

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

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

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

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

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

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

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

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

當然這兩個用法可以同時出現在一個函數中:例如

>>> 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}

參考資料: http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-python-parameters


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM