函數定義
使用*args和**kwargs傳遞可變長參數:
*args用作傳遞非命名鍵值可變長參數列表(比如元組)
**kwargs用作傳遞鍵值可變長參數列表(比如字典)
函數入參
*args
傳遞一個位置參數以及兩個可變長參數:
1 def test_var_args(farg, *args): 2 print "formal arg:", farg 3 for arg in args: 4 print "another arg:", arg 5 6 test_var_args(1, "xiaobei", 28)
結果:
1 formal arg: 1 2 another arg: xiaobei 3 another arg: 28
**kwargs
傳遞一個位置參數和兩個鍵值參數:
1 def test_var_kwargs(farg, **kwargs): 2 print "formal arg:", farg 3 for key in kwargs: 4 print "another keyword arg: %s: %s" % (key, kwargs[key]) 5 6 test_var_kwargs(farg=1, myarg2="xiaobei", myarg3=3)
結果:
1 formal arg: 1 2 another keyword arg: myarg2: xiaobei 3 another keyword arg: myarg3: 3
函數調用
在調用函數時,使用*args和**kwargs
*args
1 def test_var_args_call(arg1, arg2, arg3): 2 print "arg1:", arg1 3 print "arg2:", arg2 4 print "arg3:", arg3 5 6 args = ("hanxiaobei", 28) 7 test_var_args_call(1, *args)
結果:
1 arg1: 1 2 arg2: hanxiaobei 3 arg3: 28
**kwargs
1 def test_var_args_call(arg1, arg2, arg3): 2 print "arg1:", arg1 3 print "arg2:", arg2 4 print "arg3:", arg3 5 6 kwargs = {"arg3": 35, "arg2": "xiaobei"} 7 test_var_args_call(1, **kwargs)
結果:
1 arg1: 1 2 arg2: xiaobei 3 arg3: 35
例子:可接收一個或多個數並計算乘積的函數
1 def product(*args): 2 sum =1 3 for i in args: 4 sum = sum*i 5 print(sum ) 6 product(2,6,3,4,5,6,3,1,2,34,43,57)