<
>

Python入门之Python函数

2020-06-28 14:44:40 来源:易采站长站 作者:易采站长站整理

/
,所以 value, start, stop 都是仅位置参数,只能通过位置参数的方式传入函数。这里的
self
比较特殊,后面我们学习类的时候再介绍。示例如下:

>>> list_a = [1, 2, 3, 4, 2, 3]>>> list_a.index(2, 2)  # 从第 3 个位置开始找起
4
>>> list_a.index(2, start=2)
Traceback (most recent call last):
File "", line 1, in
TypeError: index() takes no keyword arguments

好了,学习到这里,我们可以讲解最后一种

可变参数(variable argument)
了,在 Python 中可变参数分为两种,一种是
*args
,一种是
**kwargs
。其中:

*args
是用来专门存过量的位置参数的元组,如果我们想传入任意个位置参数,我们就可以定义函数为
def func(*args)
这时,我们调用函数
func(1, 2, 3, 4, 5)
函数会把
1, 2, 3, 4, 5
这 5 个参数作为一个
元组(tuple)
,传入函数,为什么是元组,不是列表呢?就是因为元组不可变!注意:
*args
后面的参数都是
仅关键字参数
,必须通过关键字参数的形式调用。

**kwargs
是用来专门存过量的关键字参数的字典。如果我们想传入任意个关键字参数,我们可以定义函数为
def func(**kwargs)
,这是我们调用函数
func(a=1, b=2, c=3)
,函数会把
a=1, b=2, c=3
这 3 对 key-value 作为一个字典(dict),传入函数。

*args
**kwargs
可以组合使用,用于接收任意个位置参数和关键字参数,但是
*args
必须在
**kwargs
前面,所以对于任意函数,都可以通过类似
func(*args, **kwargs)
的形式调用它,无论它的参数是如何定义的。

*args
可变位置参数示列:

>>> def concat(*args, sep="/"):  # sep 为仅关键字参数
... return sep.join(args)
...
>>> concat("earth", "mars", "venus")
'earth/mars/venus'
>>> concat("earth", "mars", "venus", sep=".") # sep 为仅关键字参数
暂时禁止评论

微信扫一扫

易采站长站微信账号