Python 函数传参机制与使用方法攻略:
一、函数参数传递机制
Python函数传参机制分为两种方式:
- 位置参数(positional argument) :按照形参声明的顺序依次传递参数。
- 关键字参数(keyword argument):通过指定参数名传递参数,不必按照形参声明的顺序,可以跳过未赋初值的可选参数。
除此之外,Python 还提供以下数据结构作为参数:
- 默认参数(default argument):在函数定义的时候,给某个参数赋初值,使其变为可选参数。(注:默认参数必须是不可变类型,默认参数按一次声明,永久生效)
- 不定长参数(variable-length argument):可以接收任意数量的参数。分为
*args
和**kwargs
两种方式。
二、函数参数使用方法
- 位置参数
位置参数指的是按照形参声明的顺序依次传递参数。例如下述代码中,函数 sum(a, b)
的形参分别为 a
和 b
,在函数调用时以 2
和 3
的顺序传送实参,则得到 5
的返回值。
def sum(a, b):
return a + b
print(sum(2, 3))
输出结果为 5。
- 关键字参数
关键字参数通过指定参数名传递参数,不必按照形参声明的顺序,可以跳过未赋初值的可选参数。例如下述代码中,函数 sum(a, b=3)
的形参分别为 a
和可选参数 b
,无需按照形参定义先传入 a
,再传入 b
,直接以 b=2
和 a=3
的顺序指定参数名即可。
def sum(a, b=3):
return a + b
print(sum(b=2, a=3))
输出结果为 5。
- 默认参数
默认参数在函数定义的时候,给某个参数赋初值,使其变为可选参数。下述代码定义函数 sum(a, b=3)
,默认值为 b=3
,在函数调用时可以只传入 a
,而 b
会使用默认值。
def sum(a, b=3):
return a + b
print(sum(2))
输出结果为 5。
- 不定长参数
不定长参数可以接收任意数量的参数。分为 *args
和 **kwargs
两种方式。
*args
收集位置参数
*args
可以用来传递任意数量的位置参数,实参将被自动打包成元组形式传送给函数内部。例如下述代码:
def print_args(*args):
print(args)
print_args('one', 'two', 'three')
输出结果为:('one', 'two', 'three')
。
**kwargs
收集关键字参数
**kwargs
收集任意数量的关键字参数,传入实参将被自动打包成字典形式传送给函数内部。例如下述代码:
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(name='Alice', age=25, gender='female')
输出结果为:{'name': 'Alice', 'age': 25, 'gender': 'female'}
。
总结
Python函数传参机制非常灵活,可以传递位置参数、关键字参数、默认参数和不定长参数,在实际使用中需要根据具体情况灵活选择不同的参数传递方式。