單星號形式(*args)用來傳遞非命名鍵可變參數列表。雙星號形式(**kwargs)用來傳遞鍵值可變參數列表。
下面的例子,傳遞了一個固定位置參數和兩個變長參數。
def test_var_args(farg, *args): print "formal arg:", farg for arg in args: print "another arg:", argtest_var_args(1, "two", 3)
結果如下:
formal arg: 1another arg: twoanother arg: 3
這個例子用來展示鍵值對形式的可變參數列表,一個固定參數和兩個鍵值參數。
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)
執行結果:
formal arg: 1another keyword arg: myarg2: twoanother keyword arg: myarg3: 3
調用函數時,使用 *args and **kwargs
這種語法不僅僅是在函數定義的時候可以使用,調用函數的時候也可以使用
def test_var_args_call(arg1, arg2, arg3): print "arg1:", arg1 print "arg2:", arg2 print "arg3:", arg3args = ("two", 3)test_var_args_call(1, *args)
執行結果如下:
arg1: 1arg2: twoarg3: 3
鍵值對方式:
def test_var_args_call(arg1, arg2, arg3): print "arg1:", arg1 print "arg2:", arg2 print "arg3:", arg3kwargs = {"arg3": 3, "arg2": "two"}test_var_args_call(1, **kwargs)
結果如下:
arg1: 1arg2: twoarg3: 3