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所传的关键字内容可以是值(数值、列表、元组、字典等)可以是函数,也可以是类

posted @ 2018-05-17 17:32  mghhz816  阅读(235)  评论(0编辑  收藏  举报