python *args,**kwargs的用法
最近汪汪给我发了一些python常见面试的问题,其中一个就是*args,**kwargs的区别。所以今天下午就准备好好搞清这两个参数
*args,**kwargs的用途
我们经常在很多参数可变的函数、方法中,比如np.arange(),发现*args,**kwargs的身影。没错,如果要定义的函数传入的参数数量、类型不是固定的,那么就可以用它们作为参数
*args传非键值对的可变参数列表
*args 可以用来传非键值对的可变参数列表,这么说有点抽象,直接上demo:
//定义函数
def f(*args):
print(args)
f()
f('aaaaa')
f([1,2,3,3])
f(['a','c'])
f((1,2,(2,3)))
f(234,222,'a')
f({'s':1,11:222}) //字典也是用*args
结果:
**kwargs传键值对可变参数列表
**kwargs 可以用来传键值对可变参数列表,刚开始,我也是走入了一个误区,以为传入的参数是像字典这类的数据类型,但是,结果表明,会报错–》TypeError: f2() takes 0
positional arguments but 1 was given
ok,那么正确的用法是啥呢?
//定义函数
def f2(**kwargs):
print(kwargs)
f2()
f2(nam='aa',age=12)
*args+**kwargs
如果想让定义的函数既能传非键值对的可变参数列表,又能传键值对的可变参数列表,那就
//定义函数
def f2(*args,**kwargs):
print(args,kwargs)
今天的显摆就到这里啦~
以上部分参考度娘+csdn博客,部分是自己试出来的,有不对的地方,请多指教 :)