http://blog.csdn.net/chenjinyu_tang/article/details/8136841
好久沒有學習python了,應為工作的需要,再次拾起python,喚起記憶。
當函數的參數不確定時,可以使用*args 和**kwargs,*args 沒有key值,**kwargs有key值。
還是直接來代碼吧,廢話少說
?
- def?fun_var_args(farg,?*args):??
- ????print?"arg:",?farg??
- ????for?value?in?args:??
- ????????print?"another?arg:",?value??
- ??
- fun_var_args(1,?"two",?3)?#?*args可以當作可容納多個變量組成的list??
result:
?
- arg:?1??
- another?arg:?two??
- another?arg:?3??
?
**kwargs:
- def?fun_var_kwargs(farg,?**kwargs):??
- ????print?"arg:",?farg??
- ????for?key?in?kwargs:??
- ????????print?"another?keyword?arg:?%s:?%s"?%?(key,?kwargs[key])??
- ??
- ??
- fun_var_kwargs(farg=1,?myarg2="two",?myarg3=3)?#?myarg2和myarg3被視為key,?感覺**kwargs可以當作容納多個key和value的dictionary??
result:
?
- arg:?1??
- another?keyword?arg:?myarg2:?two??
- another?keyword?arg:?myarg3:?3??
也可以用下面的形式:
?
?
- def?fun_var_args_call(arg1,?arg2,?arg3):??
- ????print?"arg1:",?arg1??
- ????print?"arg2:",?arg2??
- ????print?"arg3:",?arg3??
- ??
- args?=?["two",?3]?#list??
- ??
- fun_var_args_call(1,?*args)??
result:
?
?
- arg1:?1??
- arg2:?two??
- arg3:?3??
?
- def?fun_var_args_call(arg1,?arg2,?arg3):??
- ????print?"arg1:",?arg1??
- ????print?"arg2:",?arg2??
- ????print?"arg3:",?arg3??
- ??
- kwargs?=?{"arg3":?3,?"arg2":?"two"}?#?dictionary??
- ??
- fun_var_args_call(1,?**kwargs)??
result:
?
?
- arg1:?1??
- arg2:"two"??
- arg3:3??