args和kwargs以及argv用法

xiaoxiao2021-02-28  49

 

当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。

下面的参数中,farg只是一个普通的变量名

*args和**kwargs可以看做是C++中的指针和二级指针来使用。

*args代表list类型,也就是说,入口参数中,填入一个*args可以当做多个参数来使用

**kwars代表字典类型,在入口参数中使用一个**kwars可以当做多个“key-value数值对”来使用

 

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 

#----------------------------------------------------------------------------------------------------------------------------------------

 

import sys a=sys.argv[2] print(a)

#----------------------------------------------------------------------------------------------------------------------------------------

附录是三个例子,args例子:

def f4(*args): print("f4...") print("type(args)",args) f4() print("-----------------------") f4(1) print("-----------------------") f4(1,2) print("-----------------------") f4(1,2,3,'a',[1,2,3])

kwargs例子1:

def f5(**kwargs): print("f5...") print(type(kwargs),kwargs) f5() f5(name="旺财",age=20)

 

kwargs例子2:

def f7(**kwargs): print(kwargs) info={"sid":1,"sname":"老王","sage":20} f7(sid=info["sid"],sname=info["sname"],sage=info["sage"]) f7(**info)

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-72384.html

最新回复(0)