python unpack 解包位置关键字参数(args,kwargs) 讲义

先看*args做了什么:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 可以看到func预期只给了三个位置参数来接受*args 解包出来的参数,一旦解包多出3个,也就是报错案例给的4个就会报错:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 

def func_unpack(*args):
print("get position args is {}".format(args))
print("unpack args to a,b,c three param:")
a,b,c=args
print(a,b,c)
func_unpack(*args)
表示接受任意个与Java Object... 一个原理:
结果:

get position args is (1, 2, 3)
unpack args to a,b,c three param:

再来类推**kwargs:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 可以看到:d=4这个没有的位置参数被传给他会报错

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 接着我们使用**kwargs测试,解包keyword 参数:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 结果可以看到

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 同样再多穿一个关键字参数d=xxx,观察异常解包keyword参数:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 结果:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 最后我们来任意位置参数解包:

python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 python unpack 解包位置关键字参数(args,kwargs) 讲义

 

 总结:*args,**kwargs其实就是编译器自动为我们解包参数给函数的功能,我们不管实现过程只要把你想传入的参数通过*解包和**解包扔给函数,他就会自动帮你完成解包过程

 

上一篇:Saltstack module freezer 详解


下一篇:数据分析-pandas表格填充