page contents

对缺省参数的理解?

轩辕小不懂 发布于 2021-11-09 15:12
阅读 566
收藏 0
分类:人工智能
2371
Nen
Nen
- 程序员

缺省参数指在调用函数的时候没有传入参数的情况下,调用默认的参数,在调用函数的同时赋值时,所传入的参数会替代默认参数。

*args 是不定长参数,他可以表示输入参数是不确定的,可以是任意多个。

**kwargs 是关键字参数,赋值的时候是以键 = 值的方式,参数是可以任意多对在定义函数的时候

不确定会有多少参数会传入时,就可以使用两个参数。

补充

*args

如果你之前学过 C 或者 C++,看到星号的第一反应可能会认为这个与指针相关,然后就开始方了,其实放宽心,Python 中是没有指针这个概念的。

在 Python 中我们使用星号收集位置参数,请看下面的例子:

>>> def fun(x,*args):

...    print(x)

...    res = x

...    print(args)

...    for i in args:

...            res += i

...    return res

...

>>> print(fun(1,2,3,4,5,6))

上述例子中,函数的参数有两个,但是我们在输出的时候赋给函数的参数个数不仅仅是两个,让我们来运行这个代码,得到如下的结果:
1
(2, 3, 4, 5, 6)
21
从上面我们可以看出,参数 x 得到的值是 1,参数 args 得到的是一个元组 (2,3,4,5,6) ,由此我们可以得出,如果输入的参数个数不确定,其它的参数全部通过 *args 以元组的方式由 arg 收集起来。

为了更能明显的看出 *args,我们下面用一个简单的函数来表示:
>>> def print_args(*args):
...    print(args)
...
接下来我传入不同的值,通过参数 *args 得到的结果我们来看一下:
>>> print_args(1,2,3)
(1, 2, 3)
>>> print_args('abc','def','ghi')
('abc', 'def', 'ghi')
>>> print_args('abc',['a','b','c'],1,2,3)
('abc', ['a', 'b', 'c'], 1, 2, 3)
不管是什么,都可以一股脑的塞进元组里,即使只有一个值,也是用元组收集,所以还记得在元组里一个元素的时候的形式吗?元组中如果只有一个元素,该元素的后面要有一个逗号。

那么如果不给 *args 传值呢?

请先 登录 后评论