python 函数传参机制与使用方法

  • Post category:Python

Python 函数传参机制与使用方法攻略:

一、函数参数传递机制

Python函数传参机制分为两种方式:

  1. 位置参数(positional argument) :按照形参声明的顺序依次传递参数。
  2. 关键字参数(keyword argument):通过指定参数名传递参数,不必按照形参声明的顺序,可以跳过未赋初值的可选参数。

除此之外,Python 还提供以下数据结构作为参数:

  1. 默认参数(default argument):在函数定义的时候,给某个参数赋初值,使其变为可选参数。(注:默认参数必须是不可变类型,默认参数按一次声明,永久生效)
  2. 不定长参数(variable-length argument):可以接收任意数量的参数。分为 *args**kwargs 两种方式。

二、函数参数使用方法

  1. 位置参数

位置参数指的是按照形参声明的顺序依次传递参数。例如下述代码中,函数 sum(a, b)的形参分别为 ab,在函数调用时以 23 的顺序传送实参,则得到 5 的返回值。

def sum(a, b):
    return a + b

print(sum(2, 3))

输出结果为 5。

  1. 关键字参数

关键字参数通过指定参数名传递参数,不必按照形参声明的顺序,可以跳过未赋初值的可选参数。例如下述代码中,函数 sum(a, b=3) 的形参分别为 a 和可选参数 b,无需按照形参定义先传入 a,再传入 b,直接以 b=2a=3 的顺序指定参数名即可。

def sum(a, b=3):
    return a + b

print(sum(b=2, a=3))

输出结果为 5。

  1. 默认参数

默认参数在函数定义的时候,给某个参数赋初值,使其变为可选参数。下述代码定义函数 sum(a, b=3),默认值为 b=3,在函数调用时可以只传入 a,而 b 会使用默认值。

def sum(a, b=3):
    return a + b

print(sum(2))

输出结果为 5。

  1. 不定长参数

不定长参数可以接收任意数量的参数。分为 *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函数传参机制非常灵活,可以传递位置参数、关键字参数、默认参数和不定长参数,在实际使用中需要根据具体情况灵活选择不同的参数传递方式。