Python进阶(三):*args,**kwargs的使用

来源:互联网 发布:java 广告位管理系统 编辑:程序博客网 时间:2024/06/04 19:33

Python进阶(三)

有时候在看代码时就会看到函数会传入 *args, **kwargs,这两个参数,有时候容易忘记他们是代表着什么,今天特别写一篇文说一说。


1.*args

这个主要表示一系列的参数前面(python进阶一的拆包)我们说过了元素名前面带 *并不是指代指针,而是表示指向一系列的参数。
比如:

*list = 'apple', 'banana'

因此我们可以对函数传入一系列的参数,并且只用一个参数名,这要做的好处就是在参数个数未定的情况下,极大的方便了我们
如下:

def test1(*args):    for i, item in enumerate(args):        print(i, item)print("test:")test1('apple', 'banana', 'cabage')

这里写图片描述

2.**kwargs

在python中这个主要用于传入一个字典类型的(key=parameter)一系列
比如:

def test2(**kwargs):    for key, parameter in kwargs.items():        print(key, parameter)print("test:")test2(one='_one', two='_two')

这里写图片描述

3.还有这些用法:

print("one more test:")_list = ["building", "sun", "flower"]_dict = {'name':"kyda", 'age':21, 'sex':"man"}test1(*_list)test2(**_dict)print("\n")def test3(a, b, c):    print(a, b, c)test3(*_list)

这里写图片描述