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 为仅关键字参数
暂时禁止评论













闽公网安备 35020302000061号