python函数参数*args **kwargs
毕业多年,把C++都就饭吃了。。。。今天居然在纠结什么是形参什么是实参。。。。。
定义函数里面写的参数就是形参,因为没有内存占用,实际调用时写的参数就是实参,因为有内存占用和传值
然后就是位置参数,可变参数和关键字参数
def foo(a,*b,**c): print(a) print(b) print(c) if __name__=="__main__": foo(1,2,3,4,k=1,g=2)
如上图程序,a,*b,**c这三个是形参,a,*b这两个是位置参数,**c是关键字参数,同时*b,**c这两个是可变参数
1,2,3,4,k=1,g=2这几个是实参,1,2,3,4是位置参数;k=1,g=2是关键字参数;1赋值给a;2,3,4以元组的形式赋值给*b;k=1,g=2以字典的形式付给**c
输出是这样子的
1 (2, 3, 4) {'g': 2, 'k': 1}
所以fun(*args,**kwargs)中
*args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元组的方式呈现)
**kwargs:(表示的就是按照关键字把传值以字典的方式呈现)
这里要注意,**kwargs所传的关键字内容可以是值(数值、列表、元组、字典等)可以是函数,也可以是类