一 理解Python中的Parameters & Arguments
Parameters:形参
Arguments:实参
二 Python的实参(Arguments)类型
- 位置参数(Positional Arguments) :函数调用时通过入参的顺序来进行值传递
- 关键字参数(Keyword Arguments):函数调用时通过形参的名称来指定值传递
三 Python的形参(Parameters)类型
在Python中,函数形参主要分为以下几类:
1. 位置或关键字参数 (Positional-Or-Keyword Arguments):指的是在函数调用时可以按位置传入(通过实参的位置),也可以通过关键字参数的形式(通过实参的名称)传入的参数,这是最常见的参数类型。
2.仅限位置参数 (Position-Only Arguments):在函数调用时只能使用位置传递(按位置传入)的参数。在Python 3.8及更高版本中,可以使用 /
符号来定义仅限位置参数的函数,/ 标记之前的参数是“仅限位置参数”。
def func(pos_only1, pos_only2, /, positional_or_keyword):
pass
3. 仅限关键字参数 (Keyword-Only Arguments):在函数调用时只能使用关键字参数的形式(通过参数名传递)来指定。在Python 3.8及更高版本中,可以使用 *
符号来定义仅限关键字参数的函数,* 标记之后的参数是“仅限关键字参数”。
def func(pos_only1, pos_only2, *, key_only1, key_only2):
pass
4. 可变参数(Variable-Length Arguments):这些参数允许在函数调用时传递可变数量的参数。可变参数分为两种:
- *args(Var-positional 可变位置参数):使用星号(
*
)表示,可以接受任意数量的位置参数。这些参数将被收集到一个元组(tuple)中。例如:
- **kwargs(Var-keyword 可变关键字参数):使用双星号(
**
)表示,可以接受任意数量的关键字参数。这些参数将被收集到一个字典(dict)中。例如:
四 总结
1. 形参出现在函数定义中,实参出现在函数调用中。
2. 实参有两种类型(位置实参和关键字实参),形参有五种类型(位置或关键字、仅限位置、仅限关键字、可变位置和可变关键字)。
3. 位置参数也可以具有默认值,可以使用关键字指定。
4. 在函数定义中,位于 / 之前的所有参数都是严格的位置参数(仅限位置)。
5. 在函数定义中,位于 * 之后的所有参数都是严格的关键字参数(仅限关键字)。
6. *args 保存任意数量剩余的位置实参。
7. **kwargs 保存任意数量剩余的关键字实参。
8. 在函数调用中,位置实参不能位于关键字实参之后。
9. 在函数定义中,**kwargs 之后不能有其他参数。这是所有参数的结尾。
参考资料:
1. https://pythonsimplified.com/python-parameters-and-arguments-demystified/
2. 腾讯元宝 (tencent.com)
3.智谱清言 (chatglm.cn)