範例與翻譯理解自連結連結

*args跟 **kwargs是類似的東西,是可有可無的參數。 一顆星的*args是tuple,可以接受很多的值。兩顆星的**kwargs一樣是可以接受很多值,但是是接受dictionary。

###一顆星用法

範例

1
2
3
4
5
6
def test_var_args(farg, *args):
print "formal arg:", farg
for arg in args:
print "another arg:", arg
test_var_args(1, "two", 3)

结果

1
2
3
formal arg: 1
another arg: two
another arg: 3

###兩顆星用法

範例

1
2
3
4
5
6
def test_var_kwargs(farg, **kwargs):
print "formal arg:", farg
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
test_var_kwargs(farg=1, myarg2="two", myarg3=3)

结果

1
2
3
formal arg: 1
another keyword arg: myarg2: two
another keyword arg: myarg3: 3

順序問題

如果function定義時如上圖先放了tuple才是dictionary,呼叫時參數先放dictionary再放tuple會跳error。