Python 中函数的参数
函数的参数有 4 种,本文对这 4 种进行简要列举,方便回忆,详细请阅读后文中的参考链接。
位置参数
用法如下 :
1 | def power(x): |
使用要点:
- 在调用时,必须按顺序给位置参数传递值
默认参数
用法如下:
1 | def power(x, n=2): |
使用要点:
- 默认参数应在位置参数后面
- 在调用时,默认参数可以不传递值。没有值时取默认值
- 默认参数必须指向不变对象
在类的定义中,可以使用默认参数来实现函数的重载
可变参数
可变参数定义如下:
1 | def calc(*numbers): |
调用:
1 | # 使用方式1 |
使用要点:
- 可变参数接收者是 tuple 类型
关键字参数
关键字参数允许传入任意个(包含 0 个)含参数名的参数,这些关键字参数在函数内部自动组装为一个 dict 类型。
非命名关键字参数
1 | def person(name, age, **kw): |
命名关键字参数
如果要限制关键字参数的名字,就可以用命名关键字参数。
使用时,只能传入指定的关键字名,命名关键字参数需要一个特殊分隔符*
,*
后面的参数被视为命名关键字参数。
1 | def person(name, age, *, city, job=“dev”): |
使用要点:
- 使用时,只能传入指定的关键字名。
- 命名关键字参数需要一个特殊分隔符
*
,*
后面的参数被视为命名关键字参数。 - 如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符
*
: - 命名参数可以设置默认值
- 没有默认值的命名参数,必须要传入值
参数组合
当必选参数、默认参数、可变参数、关键字参数和命名关键字参数组合使用时,其定义顺序为:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
1 | def f1(a, b, c=0, *args, **kw): |
可以通过 tuple 和 dic 调用上述函数:
1 | args = (1, 2, 3, 4) |
注意前面的
*
号
所以:对于任意函数,都可以通过类似func(*args, **kw)
的形式调用它,无论它的参数是如何定义的。
致谢
本文参考以下文章,在此报以诚挚谢意!