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