Python中*args和**kwargs的使用


函數定義

使用*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)

 


免責聲明!

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



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